Swift

2024 年 4 月 28 日

Swift 讓 switch case 繼續執行的 fallthrough

已複製到剪貼板


Swift 的 fallthrough 可以讓 switch case 的行為像 C 語言。

Swift Control Flow
Swift Control Flow

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。

分享文章

已複製到剪貼板

主題文章

查看 Swift

超級感謝

關於 XcodeProject

XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。


Contacts

Ricky Chuang

XcodeProject

RickyChuang.xcodeproj@gmail.com

XcodeProject 聯絡

contact.xcodeproj@gmail.com

最新文章