基本運算符
本頁內容包括:
<a name="術語"></a>術語
運算符有一元、二元和三元運算符。
- 一元運算符對單一操作對象操作(如
-a
)。一元運算符分前置運算符和后置運算符,前置運算符需緊排操作對象之前(如!b
),后置運算符需緊跟操作對象之后(如i++
)。 - 二元運算符操作兩個操作對象(如
2 + 3
),是中置的,因為它們出現在兩個操作對象之間。 - 三元運算符操作三個操作對象,和 C 語言一樣,Swift 只有一個三元運算符,就是三目運算符
(a ? b : c)
。
<a name="賦值運算符"></a>賦值運算符
賦值運算(a = b)
,表示用b
的值來初始化或更新a
的值:
與 C 語言和 Objective-C 不同,Swift 的賦值操作并不返回任何值。所以以下代碼是錯誤的:
if x = y {
// 此句錯誤, 因為 x = y 并不返回任何值
}
<a name="算數運算符"></a>算數運算符
Swift 中所有數值類型都支持了基本的四則算術運算:
- 加法(
+
) - 減法(
-
) - 乘法(
*
) - 除法(
/
)
與 C 語言和 Objective-C 不同的是,Swift 默認情況下不允許在數值運算中出現溢出情況。但是你可以使用 Swift 的溢出運算符來實現溢出運算(如a &+ b
)
加法運算符也可用于String的拼接.
求余運算符
求余運算(a % b)
是計算b的多少倍剛剛好可以容入a,返回多出來的那部分(余數)。
浮點數求余計算
不同于 C 語言和 Objective-C,Swift 中是可以對浮點數進行求余的。
8 % 2.5 // 等于 0.5
自增和自減運算
和 C 語言一樣,Swift 也提供了對變量本身加1或減1的自增(++
)和自減(--
)的縮略算符。其操作對象可以是整形和浮點型。 ?
- 當
++
前置的時候,先自増再返回。 - 當
++
后置的時候,先返回再自增。
<a name="組合賦值運算符"></a>組合賦值運算符
如同強大的 C 語言,Swift 也提供把其他運算符和賦值運算(=
)組合的復合賦值運算符,組合加運算(+=
)是其中一個例子:
<a name="比較運算符"></a>比較運算符
所有標準 C 語言中的比較運算都可以在 Swift 中使用,每個比較運算都返回了一個標識表達式是否成立的布爾值.
- 等于(
a == b
) - 不等于 (
a != b
) - 大于(
a > b
) - 小于(
a < b
) - 大于等于(
a >= b
) - 小于等于(
a <= b
)
Swift 也提供恒等===和不恒等!==這兩個比較符來判斷兩個對象是否引用同一個對象實例。
<a name="三目運算符"></a>三目運算符
三目運算符的特殊在于它是有三個操作數的運算符,它的原型是 問題 ? 答案1 : 答案2
。它簡潔地表達根據問題成立與否作出二選一的操作。如果問題成立,返回答案1的結果; 如果不成立,返回答案2的結果。
<a name="空和運算符"></a>空和運算符
空合運算符(a ?? b
)將對可選類型a
進行空判斷,如果a
包含一個值就進行解封,否則就返回一個默認值b
.這個運算符有兩個條件:
- 表達式
a
必須是Optional類型 - 默認值
b
的類型必須要和a
存儲值的類型保持一致
空合并運算符是對以下代碼的簡短表達方法
a != nil ? a! : b
<a name="區間運算符"></a>區間運算符
閉區間運算符
閉區間運算符(a...b
)定義一個包含從a
到b
(包括a
和b
)的所有值的區間,b
必須大于a
。 ? 閉區間運算符在迭代一個區間的所有值時是非常有用的,如在for-in
循環中.
for index in 1...5 {
println("\(index) * 5 = \(index * 5)")
}
半開區間運算符
半開區間(a..<b
)定義一個從a
到b
但不包括b
的區間。 之所以稱為半開區間,是因為該區間包含第一個值而不包括最后的值。
<a name="邏輯運算符"></a>邏輯運算符
邏輯運算的操作對象是邏輯布爾值。Swift 支持基于 C 語言的三個標準邏輯運算。
- 邏輯非(
!a
) - 邏輯與(
a && b
) - 邏輯或(
a || b
)