前幾天,我們學會了如何用集合來有效儲存資料。但一個只會儲存資料的程式還不夠「聰明」,它需要學會思考與決策!
今天,我們就要來學習賦予程式智慧的關鍵技巧:條件語句(Conditional Statements)。這將讓我們的程式碼不再只是一條路走到黑,而是在遇到岔路時懂得如何選擇。
我們會認識 Swift 的兩大決策工具:if
適合處理簡單的是非題,而 switch
則是應對複雜多選題的專家。
if
語句:學習 if
, else if
, else
來處理單純的條件邏輯if let
(可選綁定) 來安全地處理 Optional
值switch
語句:掌握 switch
的基礎用法,應對多重條件判斷switch
進階匹配:探索區間、元組與值綁定等強大的模式匹配技巧let temperature = 18
if temperature < 20 {
print("天氣寒冷")
} else {
print("出門記得多穿衣服")
}
let score = 85
if score >= 90 {
print("優秀")
} else if score >= 80 {
print("良好")
} else {
print("普通")
}
安全解包 Optional 值,使用 if let
綁定:
let str = "123"
// 嘗試將字串轉成整數
if let number = Int(str) {
print("轉換成功: \(number)") // 成功就解包使用
} else {
print("無法轉換") // 失敗就印出錯誤訊息
}
let number = 2
// 根據 number 的值,做不同處理
switch number {
case 1:
print("One")
case 2, 3:
print("Two or Three")
default:
print("Other")
}
必須窮盡所有情況 (Exhaustive):Swift 要求 switch
語句必須處理到所有可能的情況。如果你的 case
沒有涵蓋所有可能性,編譯器就會報錯。
這就是為什麼當情況無法一一列舉時,default
關鍵字是必需的,這個特性避免了我們意外遺漏某些情況而導致的 bug。
沒有隱式貫穿 (No Implicit Fallthrough):一旦 switch
語句匹配到一個 case
並執行完它的程式碼後,就會自動跳出,不會繼續執行下一個 case。
這意味著你不需要像在其他語言中那樣,在每個 case
結尾加上 break
,這個設計也讓程式碼更安全、更簡潔。
let score = 88
// 使用區間語法比對成績等級
switch score {
case 0..<60: // 小於 60
print("不及格")
case 60...79: // 60 到 79(含)
print("及格")
case 80...100: // 80 到 100(含)
print("優秀")
default:
print("無效分數")
}
let point = (3, 0)
// 根據座標位置給出不同的訊息
switch point {
case (0, 0):
print("Origin")
case (let x, 0):
print("X-axis: \(x)") // 在 X 軸上
case (0, let y):
print("Y-axis: \(y)") // 在 Y 軸上
default:
print("Other")
}
今天我們掌握了賦予程式「決策能力」的兩大利器:if
和 switch
!你學會了使用 if
、else if
和 else
來處理線性的條件邏輯,並透過 if let
安全地解包 Optional。
更重要的是,我們深入探索了 switch
強大的模式匹配功能,從基礎的多重條件,到靈活的區間比對、元組比對與值綁定。學會根據情境選擇合適的條件語句,讓你的程式邏輯更清晰、也更強大!
我們學會了讓程式做「判斷」,但如何讓它做「重複」的苦力活呢?如果要印出 100 次 "Hello"
,難道要複製貼上 100 次嗎?
當然不用!明天,我們就要來學習程式自動化的核心:迴圈(Loops)。你將認識 Swift 的三員大將:最常用來遍歷集合的 for-in
、先判斷後執行的 while
,以及保證至少執行一次的 repeat-while
。學會它們,你就能把所有重複繁瑣的任務,都交給程式去搞定!
敬請期待《Day 10|Swift 重複執行:搞懂 for、while、repeat》