Swift筆記:基本運算符

運算符是檢查、改變、合併值的特殊符號或短語。例如,加號(+)將兩個數相加(如 let i = 1 + 2)。更復雜的運算例子包括邏輯與運算符 &&(如 if a && b),或讓 i 值加 1 的便捷自增運算符 ++i 等。

Swift 支持大部分標準 C 語言的運算符,且改進許多特性來減少常規編碼錯誤。如:賦值符(=)不返回值,以防止把想要判斷相等運算符(==)的地方寫成賦值符導致的錯誤。算術運算符(+,-,*,/,%等)會檢測並不允許值溢出,以此來避免保存變量時由於變量大於或小於其類型所能承載的範圍時導致的異常結果。當然允許你使用 Swift 的溢出運算符來實現溢出。

區別於 C 語言,在 Swift 中你可以對浮點數進行取餘運算(%),Swift 還提供了 C 語言沒有的表達兩數之間的值的區間運算符,這方便我們表達一個區間內的數值。

運算符分爲一元、二元和三元運算符。

一元運算符對單一操作對象操作(如 -a)。一元運算符分前置運算符和後置運算符,前置運算符需緊跟在操作對象之前(如 !b),後置運算符需緊跟在操作對象之後(如 i++)。
二元運算符操作兩個操作對象(如 2 + 3),是中置的,因爲它們出現在兩個操作對象之間。
三元運算符操作三個操作對象,和 C 語言一樣,Swift 只有一個三元運算符,就是三目運算符(a ? b : c)。
受運算符影響的值叫操作數,在表達式 1 + 2 中,加號 + 是二元運算符,它的兩個操作數是值 1 和 2。

賦值運算符
賦值運算(a = b),表示把b的值賦給a。

如果賦值的右邊是一個多元組,它的元素可以馬上被分解成多個常量或變量:

let (x, y) = (1, 2)
// 現在 x 等於 1,y 等於 2

與 C 語言和 Objective-C 不同,Swift 的賦值操作並不返回任何值。

if x = y {
    // 此句錯誤, 因爲 x = y 並不返回任何值
}

算術運算符

Swift 中所有數值類型都支持了基本的四則算術運算:
加法(+)、減法(-)、乘法(*)、除法(/)
與 C 語言和 Objective-C 不同的是,Swift 默認情況下不允許在數值運算中出現溢出情況。但是你可以使用 Swift 的溢出運算符來實現溢出運算(如 a &+ b)。

求餘運算符

求餘運算(a % b)是計算 b 的多少倍剛剛好可以容入a,返回多出來的那部分(餘數)。

浮點數求餘計算

不同於 C 語言和 Objective-C,Swift 中是可以對浮點數進行求餘的。

8 % 2.5   // 等於 0.5

自增和自減運算

和 C 語言一樣,Swift 也提供了對變量本身加 1 或減 1 的自增(++)和自減(–)的縮略算符。其操作對象可以是整形和浮點型。

需要注意的是這些運算符即可修改了 i 的值也可以返回 i 的值。如果你只想修改 i 的值,那你就可以忽略這個返回值。但如果你想使用返回值,你就需要留意前置和後置操作的返回值是不同的,它們遵循以下原則:

當 ++ 前置的時候,先自増再返回。
當 ++ 後置的時候,先返回再自增。

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

比較運算符(Comparison Operators)

所有標準 C 語言中的比較運算都可以在 Swift 中使用:

等於(a == b)
不等於(a != b)
大於(a > b)
小於(a < b)
大於等於(a >= b)
小於等於(a <= b)
Swift 也提供恆等(===)和不恆等(!==)這兩個比較符來判斷兩個對象是否引用同一個對象實例。

三目運算符(Ternary Conditional Operator)

三目運算符的特殊在於它是有三個操作數的運算符,它的形式是 問題 ? 答案 1 : 答案 2。它簡潔地表達根據 問題成立與否作出二選一的操作。如果 問題 成立,返回 答案 1 的結果;反之返回 答案 2 的結果。

三目運算提供有效率且便捷的方式來表達二選一的選擇。需要注意的事,過度使用三目運算符會使簡潔的代碼變的難懂。

空合運算符(Nil Coalescing Operator)

空合運算符(a ?? b)將對可選類型 a 進行空判斷,如果 a 包含一個值就進行解封,否則就返回一個默認值 b。表達式 a 必須是 Optional 類型。默認值 b 的類型必須要和 a 存儲值的類型保持一致。

邏輯運算(Logical Operators)

邏輯運算的操作對象是邏輯布爾值。Swift 支持基於 C 語言的三個標準邏輯運算。

邏輯非(!a)
邏輯與(a && b)
邏輯或(a || b)

邏輯非

邏輯非運算(!a)對一個布爾值取反,使得 true 變 false,false 變 true。

邏輯與

邏輯與(a && b)表達了只有 a 和 b 的值都爲 true 時,整個表達式的值纔會是 true。

邏輯或

邏輯或(a || b)是一個由兩個連續的 | 組成的中置運算符。它表示了兩個邏輯表達式的其中一個爲 true,整個表達式就爲 true。

發佈了31 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章