標籤:swift switch fall through 注意
在swift的switch中,case後面加了fallthrough的用法,就和OC的case後面沒加break的用法是一樣的!
使用fallthrough需要注意的有:
1.加了fallthrough後,會直接運行【緊跟的後一個】case或default語句,不論條件是否滿足都會執行
var age = 10switch age { case 0...10: print("小朋友") fallthrough case 11...20: print("大朋友") case let x: print("\(x)歲的朋友")}//輸出結果:小朋友大朋友
2.加了fallthrough語句後,【緊跟的後一個】case條件不能定義常量和變數
var age = 10switch age { case 0...10: print("小朋友") fallthrough //此處報錯 case let x: print("\(x)歲的朋友")}//程式報錯:‘fallthrough‘ cannot transfer control to a case label that declares variables
原因,我理解的是:由第一點我們知道,第一個case執行完後(輸出“小朋友”)會直接執行下一個case,而下一個case條件裡定義了臨時變數x,這樣就導致直接從上一個case進來的並沒有這個變數x,那如果case語句裡用到了x,很明顯就會出錯。swift這麼要求安全的一種語言自然是不允許發生這種事情的,所以,fallthrough後一個case條件裡不允許定義常量/變數——除了緊跟著的後一個,後面的其他case還是可以定義常量/變數的
3.執行完fallthrough後直接跳到下一個條件陳述式,本條件執行語句後面的語句不執行
var age = 10switch age { case 0...10: print("小朋友") fallthrough print("我跳轉了哦") //這一句沒有執行 case 11...20: print("大朋友") case let x: print("\(x)歲的朋友")}//輸出結果:小朋友大朋友
如果你有任何問題,請留言告訴我!
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Swift的switch結構中,fallthrough的用法注意總結