Swift 基本運算子 (Operators)

Swift 支援大多數標準 C 語言的運算子,並增加了一些強大的新特性以減少常見錯誤。

算術運算子 (Arithmetic Operators)

基本的加減乘除:

  • + (加)
  • - (減)
  • * (乘)
  • / (除)
  • % (餘數,取模) - 這裡要注意,Swift 的餘數運算子不能用於浮點數 (不像 Java)。浮點數求餘數需使用 truncatingRemainder(dividingBy:) 方法。
1 + 2       // 等於 3
5 - 3       // 等於 2
2 * 3       // 等於 6
10.0 / 2.5  // 等於 4.0
9 % 4       // 等於 1
Swift 的算術運算子預設不允許溢位 (Overflow)。如果你計算的結果超過了該型別能容納的範圍 (例如 Int.max + 1),程式會報錯。這是一種安全保護機制。如果你確實需要溢位行為,可以使用特殊的溢位運算子 (如 &+)。

比較運算子 (Comparison Operators)

用於比較兩個值,回傳 Bool 值 (truefalse)。

  • == (等於)
  • != (不等於)
  • > (大於)
  • < (小於)
  • >= (大於等於)
  • <= (小於等於)
1 == 1   // true
2 != 1   // true
2 > 1    // true

邏輯運算子 (Logical Operators)

用於組合多個布林值。

  • ! (NOT,非)
  • && (AND,且)
  • || (OR,或)
let allowedEntry = false
if !allowedEntry {
    print("ACCESS DENIED")
}

區間運算子 (Range Operators)

這是 Swift 非常方便的一個特性,常配合迴圈 for-in 使用。

閉區間運算子 (a...b)

包含 ab,以及它們之間的所有值。

for index in 1...5 {
    print("\(index) * 5 = \(index * 5)")
}
// 輸出 1 到 5 的乘法表

半開區間運算子 (a..<b)

包含 a,但不包含 b。這在處理陣列 (Array) 這種從 0 開始且不包含長度索引的情況特別有用。

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("第 \(i + 1) 個人是 \(names[i])")
}

單側區間運算子 (One-Sided Ranges)

你可以省略一邊的值,讓區間往該方向盡可能延伸。

for name in names[2...] {
    // 從索引 2 開始直到陣列結束
    print(name)
}
// 輸出 Brian, Jack