原文:Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处。

Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String。 Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types。

与 C 语言类似,Swift 也采用变量存储数据,并通过标识符来引用变量值。 Swift 还扩充了值不可变的量--即常量,使它比 C 语言中的常量强大得多。 当在 Swift 中操作不需要改变值的数据时,使用常量可使代码更安全、更简洁。

除常见类型以外,Swift 还引入了 Objective-C 中不存在的高级类型,其中包括元组(tuple),可以新建或传递一组值。函数可以将多个值作为整体(多个元组值的组合)返回给调用方。

Swift 还引入了可选值(optional types),可处理不存在的值。可选值可以“存在一个值 x”,也可以“不存在任何值”。可选值与 Objective-C 为指针赋 nil 相似,但在 Swift 中可以对任意类型使用,而不只针对类。可选值比 Objective-C 的 nil 指针更安全且语义更生动,在 Swift 最强大的诸多功能中得到了深入的应用。

可选值是 Swift 类型安全的一点体现。Swift 可帮助你清晰地了解代码能处理的数据类型。如果代码希望得到 String 类型,类型安全的特性将阻止你错误地将 Int 类型传递过去。这样可以在开发过程中尽可能早地发现与修正问题。

常量与变量

常量及变量将名称(如maximumNumberOfLoginAttempts 或 welcomeMessage) 与特定类型的值(如数字 10 或字符串 "Hello")关联起来。常量一旦赋值,其值不可再改变;而变量以后还可以再重新赋值。

常量与变量的声明

常量与变量使用前必须先分别用let关键字和var关键字声明,下面的例子展示了常量和变量如何跟踪用户的登录次数:

1 let maximumNumberOfLoginAttempts = 10
2 var currentLoginAttempt = 0

上例的代码可以解读为:声明一个名为maximumNumberOfLoginAttempts的常量,赋值为10。声明一个变量currentLoginAttempt,将其值初始化为0。

允许用户尝试登录的最大次数赋值给了一个常量,因为最大次数的值在运行时是不变的,而当前登录次数赋值给了一个变量,因为当前尝试登陆失败的次数是累加的。

你可以使用逗号分隔的方式在一行内完成多个常量或变量的赋值:

var x = 0.0, y = 0.0, z = 0.0

练习:

用let关键字声明一个常量来保存代码中不会被改变的值,使用var关键字保存代码中需要改变的值

类型标识

声明常量或变量时刻提供类型标识,以指定该常量或变量可以保存的值的类型。使用时在常量或变量名后面跟一个冒号,一个空格再加上要使用的类型名称:

1 var welcomeMessage: String

冒号在声明表示“...的类型是...”,所以,上例中的代码意思是:“变量welcomeMessage的类型是String”。

“String类型”意味着可以保存“任何String类型的值”,也就是说可以存储的“东西的类型(或东西的种类)”。

变量welcomeMessage现在可以保存任意字符串类型的值,不会报错:

1 welcomeMessage = "Hello"

注:

在实践中需要类型标识的情况非常罕见。如果你在定义常量或变量时提供了初始值,Swift 通常能够推断出该常量或变量应使用的类型,详情参见 类型安全及类型推断(后续章节译到)。在上述 welcomeMessage 例子中,没有提供初始值,因此才通过类型说明给 welcomeMessage 变量明确指定类型,而没有让它通过初始值推断。

常量与变量的命名

你几乎可以使用任何字符来给常量或变量命名,包括Unicode字符:

1 let π = 3.14159
2 let 你好 = "你好世界"
3 let 

 = "dogcow

常量及变量的名称不可以包含数学符号、箭头、私有(即无效的)Unicode 码数,或绘制线条/方框用的字符。并且名称不能以数字开头, 但除了开头的其他地方都可以使用数字。

一旦你声明了一个指定了值类型的常量或者变量,那你就不能再次给它重新声明同名的常量或变量了,也不能更改使其存放不同类型的值,更不能把常量再次声明为变量,变量再次声明为常量。

注:

如果需要将常量或变量命名为 Swift 的保留字,可以在将该保留字作为名称使用时用反引号(`)包围。尽管如此,你还是应该避免将保留字作为名称使用,除非迫于无奈。

你可以将变量的值重新更改为其它同类型的值,如下例中变量friendlyWelcome的值由“hello!”变为“Bonjour!”:

1 var friendlyWelcome = "Hello!"
2 friendlyWelcome = "Bonjour!"
3 //friendlyWelcome 的值现在为 "Bonjour!"

与变量不同的是,常量一旦被赋值就不可再更改。尝试更改将会报错,下面代码编译时会报错:

1 let languageName = "Swift"
2 languageName = "Swift++"
3 // 编译时报错 - languageName 不可更改

常量和变量的输出

通过printIn函数输出常量和变量的当前值:

1 println(friendlyWelcome)
2 // 输出 "Bonjour!”

println 是一个全局函数,输出值并在末尾接换行符。例如在 Xcode 环境开发,println 会将输出内容输出至 Xcode 的“控制台”面板。(另一个函数 print 执行几乎一样的操作,不同之处在于,后者不会在输出值末尾换行。)

与 Cocoa 的 NSLog 函数相似,println 还能输出更复杂的日志消息,消息内容可以包含常量或变量的当前值。

Swift用字符串插入(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,提示Swift用当前常量或变量的值去替换这些占位符。将常量或变量名放入反斜杠符加一对圆括号中--"\()"

1 println("The current value of friendlyWelcome is \(friendlyWelcome)")
2 // 输出 "The current value of friendlyWelcome is Bonjour!”

注:

字符串插入可用的所有选项参见字符串插入(后续章节译到)

谢谢,Swifter-QQ群:362232993,同好者进~

Fork:https://github.com/Joejo/Swift-lesson-for-chinese

Swift语言指南(一)--语言基础之常量和变量相关推荐

  1. Swift语言指南(二)--语言基础之注释和分号

    Swift语言指南(二)--语言基础之注释和分号 原文:Swift语言指南(二)--语言基础之注释和分号 注释 通过注释向自己的代码中注入不可执行的文本,作为你自己的笔记或提示.Swift编译器运行时 ...

  2. 【C语言入门教程】2.2 常量 与 变量

    2.2 常量 与 变量 顾名思义,常量是运算中不能改变数值的数据类型,变量是可改变数值的数据类型.根据需要,可将一些在程序中不必改变数值的类型定义为常量,这样也可避免因修改数值造成程序错误.任何改变常 ...

  3. 【C语言重点难点】数据类型、常量和变量

    这部分东西在C语言考试中特别爱考,但是十分琐碎,所以总结如下 一:C语言包含的数据类型 二:各数据类型细节 三:C语言中常量和变量 三:变量命名规则 这一点还是值得详谈的,因为有的人变量命名是在是不忍 ...

  4. c++入门基础知识——常量和变量

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...

  5. c语言用指针变量输入数组的长度,C语言之数组的基础练习题(指针变量做函数参数)...

    1.交换两个变量的值: #include void swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } void main() { int ...

  6. 编程基础C——常量,变量,运算符个人总结

    标示符 命名规则:   由字母,数字,下划线组成 第一个字符必须是字母或下划线 区分大小写,大写与小写字母被认为是两个不同的字符 不可以使用关键字作为标识符   1.常量 (程序运行期间值不能被改变的 ...

  7. python的常量变量_Python基础语法-常量与变量

    Python是一门强类型的动态语言. 字面常量,变量没有类型,变量只是在特定的时间指向特定的对象而已,变量所指向的对象是有类型的. 变量:变量在赋值时被创建,它可以是任何对象的引用,但必须在引用前被赋 ...

  8. C语言-----标识符、关键字、常量、变量

    这篇文章主要对C语言的标识符.关键字.常量.变量的一些细致知识点进行详细的讲解. 比如:1.标识符的命名规范,也就是常量.变量.函数名的命名规则进行规范的讲解.2.C语言的关键字列表.3.常量的定义及 ...

  9. Swift傻傻分不清楚系列(一)常量与变量

    菜鸟从零开始认识学习Swift.感谢大神们翻译的文档.搬到自己小黑屋里慢慢看~~~ 本页包含内容: 常量和变量 声明常量和变量 类型标注 常量和变量的命名 输出常量和变量 注释 分号 Swift 是一 ...

最新文章

  1. 2019最后一期—宏基因组分析技术研讨会
  2. 管理中应避免“妇人之仁”
  3. 图解opengl曲线和曲面绘制
  4. Linux查看本机外网ip
  5. 本地连接虚拟机数据库或远程数据库
  6. java中事务实例,Java Spring 事务管理器入门例子教程(TranscationManager)
  7. html php打开,html格式如何打开
  8. v-if 表单验证_避免许多if块进行验证检查
  9. Java String indexOf(String substr,int fromIndex)方法,带示例
  10. 通过Web Api 和 Angular.js 构建单页面的web 程序
  11. IBAction和IBOutlet
  12. Word Cookbook by Eric
  13. PYTHON自动化Day9-发邮件、面向对象、类、私有、继承
  14. 平面、柱面、球面投影
  15. 打造超级IP,你真悟错了道!
  16. 电商品牌私域流量社群运营推广裂变sop搭建营销计划表格方案
  17. Java根据IP返回 省市,
  18. 如何停止胡思乱想,保持专注?
  19. 未来五年最值得投资的是哪个方向,为什么?
  20. iphone原彩显示对眼睛好吗_iphone的原彩显示有什么用吗

热门文章

  1. 深入理解css之float
  2. oracle数据库常用操作语句
  3. 再测Golang JSON类库
  4. Ayla 物联网平台全面支持主流智能语音系统
  5. webpack查缺补漏
  6. RequireJS对文件合并与压缩实现方法
  7. iOS无限轮播图片的两种方式
  8. datasnap资料
  9. qt下调用win32api 修改分辨率
  10. js判断浏览器类型、是否为移动客户端访问