Swift - Operators
2018-05-23 本文已影响9人
ienos
赋值运算符
let b = 10
if x = y { // 无效,因为赋值之后不会有返回值 }
算术运算符
- { + - * / } - { 加、减、乘、除 }
- “+” 支持 String 的连接
"hello" + "world"
取余运算符
- % 支持负数 { -9 % 4 = -1}
- a % b ,忽略 b 为负数,因为 a % b 和 a % -b 是一样的结果
复合赋值运算符
var a = 1
a += 2
// 该运算符没有返回值
let b = a += 2 // error
比较字符串
- 返回 true or false
- { == != > < >= <= }
- { === !=== } // 两个对象是否相等
比较元组数值
- 比较顺序从左到右(类型必须一致,若含有 Bool 类型则不能比较)
- 相等:需要里面部分都对应相等。
- 大于小于:如果第一个值相等,则推到下一个值进行比较(依次类推),当前比较的值进行比较,若不相等,得出结果并忽略后面元组的其他值的比较。
- 只能比较小于七个值的元组,如果需要更多,需要自己实现运算符
("blue", 2) < ("purple", 1) // OK return ture
("blue", false) < ("purple", ture) // Error
三元运算符
避免多个三元进行复合
let hasHeader = ture
let rowHeight = (hasHeader ? 30 : 50)
合并空运算符
a ?? b 等价于 a ! = nil ? a! : b
// 如果可选 a 解包有值,return a! ,为 nil return b(b 必须与 a 是同类型的),若 a 不为空,b 不执行(短路)
范围运算符
闭区间 (a..b) 包括 a 和 b , a 不能大于 b
for index in 1..5 {
}
半开区间
(a..<b)不包括b , a 不能大于 b , a 等于 b range 将为空
for i in 0..<array.count {
}
一边
for name in names[2...] {
}
for name in names[...2] {
}
let range = ...5
range.contains(7) // false
逻辑运算符
- !a 、&&、||
- && 和 || 左结合 + 短路 + 括号标明优先级使表达式更清晰