迅速落下


146

迅速有能力通过陈述吗?例如,如果我执行以下操作

var testVar = "hello"
var result = 0

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

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

Answers:


367

是。您可以按照以下方式进行操作:

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
}

29
+1不仅是提及fallthrough,而且还建议使用多案例
Thilo

3
这是C掉线的危险与缺少掉线之间的一种很好的折衷,例如C#
Alexander-Reinstate Monica

有谁知道如何从案件变成违约?情况“两个”,默认值:不会编译。
扎克·莫里斯

2
没关系。我意识到注释掉该案例使其成为默认案例集的一部分,因此:/ * case“ two”,* / default:具有我想要的效果。
扎克·莫里斯

1
@AlexanderMomchliov C#已明确掉线
Ian Newson

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

您是否知道陷入默认情况的方法?
MarcJames

5
我同意“第二种情况”。对我来说,这种行为很糟糕。为什么Swift会执行下一种情况,即使事实并非如此?这使switch语句完全没用...
Andreas Utzinger

7
case "one", "two":
    result = 1

没有break语句,但是情况要灵活得多。

附录:正如Analog File指出的那样,breakSwift中实际上有一些语句。它们仍然可以在循环中使用,尽管在switch语句中没有必要,除非您需要填充否则为空的情况,因为不允许空情况。例如:default: break


6

这是您容易理解的示例:

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匹配或不匹配时,用于执行下一个情况(仅一个)。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.