快速通過說法嗎? e.g如果我做了以下快速通過案例
var testVar = "hello"
var result = 0
switch(testVal)
{
case "one":
result = 1
case "two":
result = 1
default:
result = 3
}
是有可能有情況「一」和案件「兩節」執行相同的代碼?
快速通過說法嗎? e.g如果我做了以下快速通過案例
var testVar = "hello"
var result = 0
switch(testVal)
{
case "one":
result = 1
case "two":
result = 1
default:
result = 3
}
是有可能有情況「一」和案件「兩節」執行相同的代碼?
是的。你可以這樣做如下:
var testVal = "hello"
var result = 0
switch testVal {
case "one", "two":
result = 1
default:
result = 3
}
或者,您可以使用關鍵字fallthrough
:
var testVal = "hello"
var result = 0
switch testVal {
case "one":
fallthrough
case "two":
result = 1
default:
result = 3
}
case "one", "two":
result = 1
沒有break語句,但情況是很多更靈活。
附錄:由於模擬文件指出,在Swift中實際上有break
語句。它們仍然可用於循環,但在switch
語句中是不必要的,除非您需要填寫空白的情況,因爲空的情況是不允許的。例如:default: break
。
關鍵字fallthrough
在案件結束時會導致您正在查找的潛在行爲,並且可以在單個案件中檢查多個值。
var testVar = "hello"
switch(testVar) {
case "hello":
println("hello match number 1")
fallthrough
case "two":
println("two in not hello however the above fallthrough automatically always picks the case following whether there is a match or not! To me this is wrong")
default:
println("Default")
}
你知道的一種方式下跌至默認情況下? – MarcJames
我同意「案例二」。對我來說,這種行爲很糟糕。爲什麼Swift執行下一個案例,即使它不是真的?這使得switch語句完全無用...... –
這裏是例子你很容易理解:
let value = 0
switch value
{
case 0:
print(0) // print 0
fallthrough
case 1:
print(1) // print 1
case 2:
print(2) // Doesn't print
default:
print("default")
}
結論:使用fallthrough
執行下一個case(只有一個)時,前一個有fallthrough
是匹配與否。
+1提及'fallthrough'+1 – nhgrif
+1不只是提及'fallthrough',而是建議使用多案例 – Thilo
這是一個很好的妥協之間的C通過墜毀的危險,並沒有通過墜落例如,C# – Alexander