注:本文为自己学习The Swift Programming Language的笔记,其中的例子为引用原书和其他博文或自己原创的。每个例子都会批注一些实践过程中的经验或思考总结。

1.术语

Swift的运算符分为一元、二元和三元。

一元运算符:前缀一元运算符:+正号,-负号,!取反,++前缀加,--前缀减等,和后缀一元运算符:++后缀加,--后缀减等。

二元运算符:=赋值运算符,二元算术运算符:+加,-减,*乘,/除,%求余数等,二元逻辑运算符:&&逻辑与,||逻辑或等,二元关系运算符:>大于,<=小于等于,==等于,!=不等于等。

三元运算符:Swift有唯一三元运算符,条件运算符:a ? b : c。

2. 赋值

赋值符号=区别于关系等于==,配合元组赋值运算可以实现多个不同类型元素在一条语句中完成赋值。

Swift的赋值符号不同于Object-C和C等,它不返回任何值,因而不能用于条件判断。

复合赋值符+=、-=、*=、/=:a Q= b 等价于 a = a Q b,其中Q为四则运算。

3. 算术运算符

3.1基本算术运算符

四则运算+、-、*、/, 需要注意以下几点:

(1) /除法作用于整数是执行整除运算:

let a : Int = 3 / 5
println("[a] = \(a)")
//prints [a] = 0

(2)+加法可以作用于String类型和Character类型任意两两组合实现字符串拼接,返回值是String类型。

3.2求余运算符

Swift不仅支持整型求余,还支持浮点型求余:

println(8.5 % 2.5)
//prints 1.0

3.3自增减运算符

Swift自增减运算符在支持整型的基础上还支持浮点型变量。

自增减运算符在实现变量加1或减1的同时返回一个值,前缀++或--是返回完成自增减之后的值,而后缀++或--是返回完成自增减之前的值。

var b = 8.5
let c = b++
let d = ++b
println("b = \(b),c = \(c),d = \(d)")
//prints b = 10.5,c = 8.5,d = 10.5


3.4正负运算符

正号运算符作用在正数或负数上都不改变其值,相当于什么也没做。

负号运算符相当于取相反数,遵守负负抵消的原则。

4. 比较运算符

Swift除了支持常见的七种比较运算符,还提供===和!==符号用于比较两个对象是否指向同一个对象的实例。

5. 三元条件运算符

Swift三元运算符和其普通用法一样,相当于一个if-else语句:

let numOfChapter = 20
let (beVerb,pluralSuffix) = numOfChapter > 1 ? ("are","s") : ("s","")
println("There \(beVerb) \(numOfChapter) chapter\(pluralSuffix) in this book")
//prints There are 20 chapters in this book


6. 区间运算符


Swift引入区间运算符来简化表达取值范围。

闭区间运算符是三个点 ... ,a...b表示从a到b包括a、b的取值。

半开半闭区间运算符是两个点 .. ,a..b表示从a到b包括a但不包括b的取值。

区间运算符主要用于for循环的简化书写:

for index in 1...5 {
    println("\(index) times 5 is \(index * 5)")
}


7. 逻辑运算符

Swift的逻辑与或非分别为&&、||、!,注意在混合逻辑表达式中与的优先级高于或,但最好添加圆括号来区别优先级,增强阅读性。