Swift 2.0 基本运算符

0.加法运算符( + )也可用于 String 的拼接。

1.不同于 C 语言和 Objective-C,Swift 中是可以对浮点数进行求余的

1
8 % 2.5 // 等于 0.5

2.空合运算符( a ?? b )将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b.这个运算符有两个条件:

  • 表达式 a 必须是 Optional 类型
  • 默认值 b 的类型必须要和 a 存储值的类型保持一致

空合运算符是对以下代码的简短表达方法:

1
a != nil ? a! : b

3.++ 前置的时候,先自増再返回。当 ++ 后置的时候,先返回再自增--也是这样。

1
2
3
var a = 0
let b = ++a // a 和 b 现在都是 1
let c = a++ // a 现在 2, 但 c 是 a 自增前的值 1

4.Swift 也提供恒等 === 和不恒等 !== 这两个比较符来判断两个对象是否引用同一个对象实例。

注:

因为类是引用类型,有可能有多个常量和变量在后台同时引用某一个类实例。(对于结构体和枚举来说,这并不成立。因为它们作为值类型,在被赋予到常量、变量或者传递到函数时,其值总是会被拷贝。)

如果能够判定两个常量或者变量是否引用同一个类实例将会很有帮助。为了达到这个目的,Swift 内建了两个恒等运算符:

  • 等价于 ( ===
  • 不等价于 ( !==

以下是运用这两个运算符检测两个常量或者变量是否引用同一个实例:

1
2
3
4
if tenEighty === alsoTenEighty {
print("tenEighty and alsoTenEighty refer to the same Resolution instance.")
}
//输出 "tenEighty and alsoTenEighty refer to the same Resolution instance."

请注意“等价于”(用三个等号表示,===) 与“等于”(用两个等号表示,== )的不同:

  • “等价于”表示两个类类型(class type)的常量或者变量引用同一个类实例。
  • “等于”表示两个实例的值“相等”或“相同”,判定时要遵照类设计者定义定义的评判标准,因此相比于“相等”,这是一种更加合适的叫法。

5.闭区间运算符( a...b )定义一个包含从 ab(包括 ab )的所有值的区间,b 必须大于等于 a

1
2
3
4
5
6
7
8
for index in 1...5 {
print("\(index) * 5 = \(index * 5)")
}
// 1 * 5 = 5
// 2 * 5 = 10
// 3 * 5 = 15
// 4 * 5 = 20
// 5 * 5 = 25

6.半开区间( a..<b )定义一个从 ab 但不包括 b 的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。

1
2
3
4
5
6
7
8
9
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("第 \(i + 1) 个人叫 \(names[i])")
}
// 第 1 个人叫 Anna
// 第 2 个人叫 Alex
// 第 3 个人叫 Brian
// 第 4 个人叫 Jack

7.Swift 逻辑操作符 &&|| 是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。