switch语句中的案例顺序是否重要?

时间:2017-11-17 13:41:27

标签: swift enums foundation

var number = 10

var bool = false

switch (number, bool) {

case (_, false):
    print("bool is false")
case (10, _):
    print("number is 10")
default:
    print("whatever")
}

上面会打印“bool is false”

var number = 10

var bool = false

switch (number, bool) {
case (10, _):
    print("number is 10")
case (_, false):
    print("bool is false")
default:
    print("whatever")
}

上面会打印“数字是10”

为了进一步测试这一点,我将default案例移到了顶部并得到了:

  

错误:“默认”后无法显示其他“案例”块   阻止“开关”

问题:

这是标准的基金会行为吗?我看了library,但没有找到任何关于案件顺序的信息。

另外这是否意味着两个案件不能相同但可能重叠......而且只会先发生哪一种情况?

1 个答案:

答案 0 :(得分:3)

switch语句是Swift语言的一部分,而不是任何特定的库,是的,顺序很重要。

将switch语句视为一系列“if-then-else”语句的快捷方式可能会有所帮助。说我有以下声明:

switch(number) {
case (1):
    do_something_for_one()
    break
case (2):
    do_something_for_two()
    break
default:
    do_something_for_default()
    break
}

这在功能上等同于以下代码:

if(number == 1) {
    do_something_for_one()
}
else if (number == 2) {
    do_something_for_two()
}
else {
    do_something_for_default()
}

您看到default代表else。在其他之后添加else if()是没有意义的,因为它永远不会执行(else'吃'输入)