switch 语句中 case 的顺序重要吗?

Does the order of cases in a switch statement matter?

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")
}

以上将打印 "number is 10"

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

error: additional 'case' blocks cannot appear after the 'default' block of a 'switch'

问题:

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

此外,这是否意味着两个案例不能相同但可以重叠...并且它会通过先发生的案例来解决?

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 之后添加 else if() 是没有意义的,因为它永远不会执行(else 'eats' 输入)