迅速的案件通过

时间:2014-06-04 23:02:43

标签: switch-statement swift

swift是否会声明失败?例如,如果我做以下

var testVar = "hello"
var result = 0

switch(testVal)
{
case "one":
    result = 1
case "two":
    result = 1
default:
    result = 3
}

是否可以为案例“一”和案例“两个”执行相同的代码?

5 个答案:

答案 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会导致您正在寻找的堕落行为,并且可以在一个案例中检查多个值。