運算符是檢查, 改變, 合併值的特殊符號或短語. 例如, 加號 + 把計算兩個數的和(如 let i = 1 + 2)。複雜些的運行算包括邏輯與&&(如 if enteredDoorCode && passedRetinaScan),還有自增運算符 ++i 這樣讓自身加一的便捷運算。下面介紹基礎運算符中的數值運算。
數值運算
Swift 讓所有數值類型都支持了基本的四則運算:
加法 +
減法 -
乘法 *
除法 /
1 + 2 // 等於 3
5 - 3 // 等於 2
2 * 3 // 等於 6
10.0 / 2.5 // 等於 4.0
與C語言和Objective-C不同的是,Swift默認不允許在數值運算中出現溢出情況。但你可以使用 Swift 的溢出運算符來達到你有目的的溢出, (如 a &+ b )。詳情請移步: 溢出運算符。
加法操作 + 也用於字符串的拼接:
"hello, " + "world" // 等於 "hello, world"
兩個字符類型或一個字符類型和一個字符串類型, 相加會生成一個新的字符串類型:
let dog = "🐶"
let cow = "🐂"
let dogCow = dog + cow // dogCow 現在是 "🐶🐂"
1. 求餘運算
求餘運算 a % b 是計算 b 的多少倍剛剛好可以容入 a , 多出來的那部分叫餘數。
注意:
求餘運算(%)在其他語言也叫取模運算. 然而嚴格說來, 我們看該運算符對負數的操 作結果, 求餘 比 取模 更合適些。
我們來談談取餘是怎麼回事, 計算 9 % 4, 你先計算出 4 的多少倍會剛好可以容入 9 中。
2 倍, 非常好, 那餘數是 1 (用'*'標出)。
在 Swift 中這麼來表達
9 % 4 // 等於 1
爲了得到 a % b 的結果, %計算了以下等式, 並輸出餘數作爲結果:
a=(b×倍數)+餘數
當倍數取最大值的時候, 就會剛好可以容入 a 中。
把 9 和 4 代入等式中, 我們得 1:
9 = ( 4 * 2 ) + 1
同樣的方法, 我來們計算 -9 % 4 :
-9 % 4 //等於-1
把 -9 和 4 代入等式, -2 是取到的最大整數:
-9 = ( 4 * -2 ) + -1
餘數是 -1。
在對負數 -b 求餘時, -b 的符號會被忽略. 這意味着 a % b 和 a % -b 的結果是相同的。
2. 浮點數求餘計算
不同於 C 和 Objective-C, Swift 中是可以對浮點數進行求餘的。
let re = 8.0.truncatingRemainder(dividingBy: 2.5)
print(re)
這個例子中, 8 除於 2.5 等於 3 餘 0.5, 所以結果是 0.5。
3. 自增和自減運算
和 C 一樣, Swift 5 以前也提供了方便對變量本身加 1 或減 1 的自增 ++ 和自減 -- 的運算符. 其 操作對象可以是整形和浮點型。
Swift 5之後停止了自增和自減的使用,如果想實現該效果代碼如下:
var i = 0
i += 1 // 現在 i= 1
4. 單目負號
數值的正負號可以使用前綴 - (即單目負號) 來切換:
// 單目負號
let three = 3
let minusThree = -three // minusThree 等於 -3
let plusThree = -minusThree // plusThree 等於 3, 或 "負負 3"
單目負號寫在操作數之前, 中間沒有空格。
5. 單目正號
單目正號 + 不做任何改變地返回操作數的值。
let minusSix = -6
let alsoMinusSix = +minusSix // alsoMinusSix 等於 -6
雖然單目 + 做無用功, 但當你在使用單目負號來表達負數時, 你可以使用單目正號來表 達 正數, 如此你的代碼會具有對稱美。