常量 和 变量 将 变量名 (比如: name 或者 age) 和一个 值 (比如: 张三 或者 18) 关联起来. 
常量 的值一旦设置就 不可改变.
变量 可以在将来设置不同的值.
声明常量和变量
常量 和 变量 在使用之前都必须事先进行声明. 声明 常量 使用 let 关键字, 声明 变量 使用 var 关键字:
1
2
3
4
// 常量
let name = "张三"
// 变量
var age = 18
也可以在一行内同时声明多个 常量 或者 变量, 常量 或者 变量 之间使用 , 分隔:
1
2
let a = 1, b = 2, c = 3
var x = 4, y = 5, z = 6
提示 如果一个
存储值在代码执行的整个过程中都不会被修改, 则使用let关键字来声明为 常量. 变量 仅仅在存储值在代码执行过程中需要修改的时候使用.
类型注解
声明 常量 和 变量 时候可以通过 类型注解 来明确他们 可以存储的值的类型.
同样的, 你也可以这样在一行定义多个 变量:
1
var red, green, blue: Double
常量和变量的命名
常量 和 变量 的名称可以包含 几乎所有字符 , 包括 Unicode 字符:
1
2
let π = 3.14159
let 你好 = "你好世界"
但是, 常量 和 变量 名都不能包含: 空格, 数学符号, 箭头, 私有的Unicode标量, 方框绘制字符. 
名称可以包含 数字, 但是 不能以数字开头.
一旦声明了某个类型的 常量 或者 变量, 就不能再声明 同名 的 常量 或者 变量. 也不能修改其 存储类型, 也无法把 常量 修改为 变量, 反之亦然.
提示 如果需要声明的 常量 或 变量 的名称是 Swift 的
保留关键字, 你可以使用 ``` 符号包括该常/变量名. 但是一般不推荐使用保留关键字作为常/变量名.
变量赋值
你可以通过 = 来改变一个已经存在的 变量 的值:
1
2
var name = "张三"
name = "李四"
但是 常量 的值不可改变:
1
2
let age = 18
age = 19
这样的写法将会报编译错误: age cannot be changed.
常量和变量的打印
你可以通过 print(_:separator:terminator:) 方法来打印 常量 和 变量:
1
2
print(name)
// 打印结果: 李四
print(_:separator:terminator:) 方法是一个全局的方法. 他可以以合适的方法在 控制台 打印一个或者多个值. 其中 separator 和 terminator 2 个参数有默认值, 因此在调用的时候可以省略掉. 默认情况下, 打印结果的尾部会输出一个 换行符 来终止打印. 如果想要不带 换行符 的输出结果, 可以传入 空字符串 作为参数 terminator 的值. 比如:
1
print(name, terminator: "")
Swift 使用字符串插值的方式把 常/变量名 包含在字符串中作为 占位符, 并在输出时候替换成 常/变量 的值. 使用 () 来括住 常/变量名, 并在括号前使用 \ 转义:
1
2
print("我的名字是: \(name)")
// 打印结果: 我的名字是: 李四
注释
注释 是代码中 非可执行的文本, 用于 注释 或 提醒. 编译器在编译代码时候会忽略掉 注释.
Swift 中的注释和 C, OC 中的注释非常相似.
单行注释
单行注释 以 // 开始, 注释单行内容. 例如:
1
// 这是一个单行注释
多行注释
多行注释 以 /* 开始, 以 */ 结束, 可以注释多行内容. 例如:
1
2
3
4
/*
这是多行注释的第一行
这是多行注释的第二行
*/
与 C 和 OC 中的多行注释不同的是, Swift 中的 多行注释 可以进行 嵌套. 例如:
1
2
3
/* 第一个单行注释开始
/* 嵌套的多行注释 */
第一个单行注释结束*/
嵌套 多行注释 可以快速注释大块代码, 尽管注释快内已经包含了 多行注释.
关于分号
不想其他编程语言, Swift 中可以省略代码语句尾部的 ;, 当然你写上 ; 也不会有任何问题. 但是同一行内如果有多句代码, 需要使用 ; 来分割. 例如:
1
2
let cat = "猫"; print(cat)
// 打印结果: "猫"