運(yùn)算符分類
從操作數(shù)角度看:運(yùn)算符包括一元、二元、三元。這里的一二三指操作數(shù)的數(shù)量,操作數(shù)指的是被操作的數(shù)值。
從運(yùn)算符位置看:運(yùn)算符分為前綴、中綴、后綴。例如:!b, b + c, c!
賦值運(yùn)算符
賦值運(yùn)算符( a = b )可以初始化或者更新 a 為 b 的值:
如果賦值符號右側(cè)是擁有多個值的元組,它的元素將會一次性地拆分成常量或者變量:
1
2
|
let (x, y) = (1, 2) // x 等于 1, 同時 y 等于 2 |
與 Objective-C 和 C 不同,Swift 的賦值符號自身不會返回值。下面的語句是不合法的:
1
2
3
|
if x = y { // 這是不合法的, 因?yàn)?x = y 并不會返回任何值。 } |
這個特性避免了賦值符號 (=) 被意外地用于等于符號 (==) 的實(shí)際意圖上。Swift 通過讓 if x = y 非法來幫助你避免這類的錯誤在你的代碼中出現(xiàn)。
算數(shù)運(yùn)算符
- 加 ( + ),:作為中綴,表示兩個數(shù)值相加,如果是字符串,表示字符串拼接;作為前綴,表示正數(shù),數(shù)值不變
- 減 ( - ): 作為中綴,表示兩個數(shù)值相減;作為前綴,表示負(fù)數(shù)
- 乘 ( * )
- 除 ( / )
- 取余(%):余數(shù)運(yùn)算符( a % b )可以求出多少個 b 的倍數(shù)能夠剛好放進(jìn) a 中并且返回剩下的值(就是我們所謂的余數(shù))。9 % 4 = 1, 因?yàn)?4 * 2 + 1 = 9
組合運(yùn)算符
+= 、 -= 、/= 、*=
1
2
|
var a = 1 a += 2 |
表達(dá)式 a += 2 其實(shí)就是 a = a + 2 的簡寫。效率上來講,加號和賦值符號組合成的一個運(yùn)算符能夠同時進(jìn)行這兩個操作。
比較運(yùn)算符
下面是常規(guī)的比較運(yùn)算符:
- 相等 ( a == b )
- 不相等 ( a != b )
- 大于 ( a > b )
- 小于 ( a < b )
- 大于等于 ( a >= b )
- 小于等于 ( a <= b )
也可以用在相同數(shù)量的元組中, 元組以從左到右的順序比較大小,一次一個值,直到找到兩個不相等的值為止。如果所有的值都是相等的,那么就認(rèn)為元組本身是相等的。
Swift 標(biāo)準(zhǔn)庫包含的元組比較運(yùn)算符僅支持小于七個元素的元組。要比較擁有七個或者更多元素的元組,你必須自己實(shí)現(xiàn)比較運(yùn)算符。
1
2
3
4
|
(1, "zebra" ) < (2, "apple" ) // true because 1 is less than 2 (3, "apple" ) < (3, "bird" ) // true because 3 is equal to 3, and "apple" is less than "bird" (4, "dog" ) == (4, "dog" ) // true because 4 is equal to 4, and "dog" is equal to "dog" |
三目運(yùn)算符
三元條件運(yùn)算符是一種有三部分的特殊運(yùn)算,它看起來是這樣的: question ? answer1 : answer2 。這是一種基于 question 是真還是假來選擇兩個表達(dá)式之一的便捷寫法。
三元條件運(yùn)算符提供了一個非常有效的簡寫來決策要兩個表達(dá)式之間選哪個。總之,使用三元條件運(yùn)算符要小心。它的簡潔性會導(dǎo)致你代碼重用的時候失去易讀的特性。避免把多個三元條件運(yùn)算符組合到一句代碼當(dāng)中。
合并空值運(yùn)算符
合并空值運(yùn)算符 ( a ?? b )如果可選項 a 有值則展開,如果沒有值,是 nil ,則返回默認(rèn)值 b 。表達(dá)式 a 必須是一個可選類型。表達(dá)式 b 必須與 a 的儲存類型相同。
合并空值運(yùn)算符是下邊代碼的縮寫:
1
2
|
a != nil ? a! : b |
區(qū)間運(yùn)算符
閉區(qū)間運(yùn)算符( a...b )定義了從 a 到 b 的一組范圍,并且包含 a 和 b 。 a 的值不能大于 b 。
1
2
3
|
for index in 1...5 { print( "\(index) times 5 is \(index * 5)" ) } |
半開區(qū)間運(yùn)算符( a..<b )定義了從 a 到 b 但不包括 b 的區(qū)間,即 半開 ,因?yàn)樗话鹗贾档⒉话Y(jié)束值
單側(cè)區(qū)間:有另外一種形式來讓區(qū)間朝一個方向盡可能的遠(yuǎn)。比如說,一個包含數(shù)組所有元素的區(qū)間,從索引 2 到數(shù)組的結(jié)束。在這種情況下,你可以省略區(qū)間運(yùn)算符一側(cè)的值。因?yàn)檫\(yùn)算符只有一側(cè)有值,所以這種區(qū)間叫做單側(cè)區(qū)間。閉區(qū)間和半開區(qū)間都有單側(cè)區(qū)間的形式。比如說:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
let names = [ "Anna" , "Alex" , "Brian" , "Jack" ] for name in names[2...] { print(name) } // Brian // Jack for name in names[...2] { print(name) } // Anna // Alex // Brian for name in names[..<2] { print(name) } // Anna // Alex |
邏輯運(yùn)算符
- 邏輯 非 ( !a ):取反
- 邏輯 與 ( a && b ) :短路與。如果第一個值是 false ,那么第二個值就會被忽略掉了,因?yàn)樗呀?jīng)無法讓整個表達(dá)式再成為 true 。這就是所謂的 短路計算
- 邏輯 或 ( a || b ):短路或。如果邏輯或運(yùn)算符左側(cè)的表達(dá)式為 true ,那么右側(cè)則不予考慮了,因?yàn)樗粫绊懙秸麄€邏輯表達(dá)式的結(jié)果。
- Swift 語言中邏輯運(yùn)算符 && 和 || 是左相關(guān)的,這意味著多個邏輯運(yùn)算符組合的表達(dá)式會首先計算最左邊的子表達(dá)式。
總結(jié)
到此這篇關(guān)于iOS Swift邏輯運(yùn)算符的文章就介紹到這了,更多相關(guān)iOS Swift邏輯運(yùn)算符內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.cnblogs.com/mysweetAngleBaby/p/15386137.html