在switch语句中,case的顺序重要吗?
在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进行处理?
在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语句。