swift是否会声明失败?例如,如果我做以下
var testVar = "hello"
var result = 0
switch(testVal)
{
case "one":
result = 1
case "two":
result = 1
default:
result = 3
}
是否可以为案例“一”和案例“两个”执行相同的代码?
答案 0 :(得分:343)
是。你可以这样做:
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
}
答案 1 :(得分:8)
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")
}
答案 2 :(得分:7)
case "one", "two":
result = 1
没有中断声明,但案例更灵活。
附录:正如Analog File指出的那样,Swift中实际上有break
个语句。它们仍然可以在循环中使用,虽然在switch
语句中是不必要的,除非你需要填充其他空的情况,因为不允许空的情况。例如:default: break
。
答案 3 :(得分:4)
以下是您易于理解的示例:
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
匹配时,使用fallthrough
执行下一个案例(仅一个案例)。
答案 4 :(得分:2)
案例结尾处的关键字fallthrough
会导致您正在寻找的堕落行为,并且可以在一个案例中检查多个值。