一、基础语法
1、常量和变量
- 常量(let):常量的值一旦设定就不能改变。
- 它的值不要求在编译时期确定,但使用之前必须赋值1次
- 只能赋值1次
- 变量(var):变量的值可以随意更改
2、标识符
- 标识符(比如常量名、变量名、函数名)几乎可以使用任何字符
- 标识符不能以数字开头,不能包含空白字符、制表符、箭头等特殊字符
3、常见数据类型
- 值类型
- 枚举:Optional
- 结构体:Bool、Int、Float、Double、Character、String、Array、Dictionary、 Set
- 引用类型
- 类
4、注释
5、字面量
6、类型转换
7、元组
元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。
let http404Error = (404, "Not Found")
// http404Error 的类型是 (Int, String),值是 (404, "Not Found")
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 输出“The status code is 404”
print("The status message is \(statusMessage)")
// 输出“The status message is Not Found”
//如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记:
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// 输出“The status code is 404”
let http200Status = (statusCode: 200, description: "OK")
print("The status code is \(http200Status.statusCode)")
// 输出“The status code is 200”
print("The status message is \(http200Status.description)")
// 输出“The status message is OK”
8、类型别名
类型别名(type aliases)就是给现有类型定义另一个名字。你可以使用 typealias 关键字来定义类型别名。
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound 现在是 0
9、布尔值
Swift 有一个基本的布尔(Boolean)类型,叫做 Bool。布尔值指逻辑上的值,因为它们只能是真或者假。Swift 有两个布尔常量,true 和 false
10、基本运算符
1. 赋值运算符
- 赋值运算符(a = b),表示用 b 的值来初始化或更新 a 的值
2. 算术运算符
- 加法(+):加法运算符也可用于 String 的拼接
- 减法(-)
- 乘法(*)
- 除法(/)
3. 组合赋值运算符
-
其他运算符和赋值运算(=)组合的组合赋值运算符 var a = 1 a += 2
//表达式 a += 2 是 a = a + 2 的简写
4. 比较运算符
- 等于(a == b)
- 不等于(a != b)
- 大于(a > b)
- 小于(a < b)
- 大于等于(a >= b)
- 小于等于(a <= b)
- Swift 也提供恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否引用同一个对象实例
5. 三元运算符
------> 问题 ? 答案 1 : 答案 2
6. 空合运算符
- 空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解包,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。
7. 区间运算符
- 闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。
- 半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。
- 闭区间操作符有另一个表达形式,可以表达往一侧无限延伸的区间 let range = ...5 range.contains(7) // false range.contains(4) // true range.contains(-1) // true
8. 逻辑运算符
- 逻辑非(!a)
- 逻辑与(a && b)
- 逻辑或(a || b)
9.恒等运算符
- 判定两个常量或者变量是否引用同一个类实例有时很有用。为了达到这个目的,Swift 提供了两个恒等运算符
- 相同(===)
- 不相同(!==)
if tenEighty === alsoTenEighty {
print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
}
// 打印 "tenEighty and alsoTenEighty refer to the same VideoMode instance."
请注意,“相同”(用三个等号表示,===)与“等于”(用两个等号表示,==)的不同。“相同”表示两个类类型(class type)的常量或者变量引用同一个类实例。“等于”表示两个实例的值“相等”或“等价”,判定时要遵照设计者定义的评判标准。