Swift 的 fallthrough 可以讓 switch case 的行為像 C 語言。
Swift 與 C 語言的 switch 比較
在 Swift,switch case 在第一次比對到條件時,只會將此條件的程式執行完就跳出 switch 了。不像是 C 語言,會在比對到之後,就將以下的所有 case 全都執行完。Swift 不使用與 C 語言一樣的行為,主要是為了可以讓程式更為簡潔與可預期,避免一次執行多個 case 來造成錯誤。
C 語言使用 break 關鍵字
在 C 語言中,如果我們想避免執行多個 switch case 的話,會使用 break 來跳出 switch。
Swift 使用 fallthrough 關鍵字
在 Swift 中,因為已經沒有執行多個 switch case 的行為了,所以如果我們想要和 C 語言一樣能執行多個 case 時,就要使用 fallthrough 關鍵字。
let integerToDescribe = 5
var description = "The number \(integerToDescribe) is"
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
description += " a prime number, and also"
fallthrough
default:
description += " an integer."
}
print(description)
// 輸出:The number 5 is a prime number, and also an integer.
這裡的例子,雖然已經比對到了第一個 case,但因為在最後遇到了 fallthrough,所以程式還是會繼續往下執行。
注意
fallthrough 只會讓 Swift 繼續往下多執行一個 case(或 default),而且完全不會再比對下一個 case 是否吻合。
再舉一個例子:
let num = 0
switch num {
case 0:
print("📱")
fallthrough
case 1:
print("💻")
default:
print("⌚️")
}
// 輸出:📱💻
這裡,因為 num 比對到了 case 0,所以印出「📱」,接著遇到 fallthrough 關鍵字,也就繼續往下一個 case 執行,且不會再比對判斷,印出「💻」,但因為 case 1 裡就沒再寫 fallthrough 了,所以 Swift 也就執行到此離開 switch。
關於 XcodeProject
XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。