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

17 浏览
0 Comments

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

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'

问题:

这是标准的Foundation行为吗?我查看了库,但没有找到关于case顺序的任何信息。

此外,这是否意味着两个case不能相同但可以重叠...并且会按照先出现的case进行处理?

0
0 Comments

在Swift语言中,switch语句是一种快捷方式,相当于一系列的“if-then-else”语句。在switch语句中,case的顺序是有影响的。如果我们将switch语句转化为if-else语句,可以看出default相当于else,因此在default之后添加else if是没有意义的,因为它永远不会被执行。

对于是否可以在switch语句中使用相同的case,目前还没有明确的答案。尽管实际上是可以的,但会收到警告。另外,需要注意的是在Swift中,命名约定是使用驼峰命名法而不是蛇形命名法。

总结起来,order matters的原因是switch语句相当于一系列的if-else语句,case的顺序决定了条件的判断顺序。如果需要在switch语句中使用相同的case,虽然可以实现,但不符合命名约定,并且会收到警告。对于解决这个问题,可以根据实际情况重新排列case的顺序或者使用其他逻辑结构来替代switch语句。

0