Swiftにはフォールスルーステートメントがありますか?たとえば、次のことを行う場合
var testVar = "hello"
var result = 0
switch(testVal)
{
case "one":
result = 1
case "two":
result = 1
default:
result = 3
}
ケース「1」とケース「2」に対して同じコードを実行することは可能ですか?
はい。次のようにできます。
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
}
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")
}
case "one", "two":
result = 1
Breakステートメントはありませんが、ケースははるかに柔軟です。
補遺: Analog Fileが指摘しているように、Swiftには実際にbreak
ステートメントがあります。 switch
ステートメントでは不要ですが、ループで使用できますが、空のケースは許可されないため、空のケースを埋める必要がある場合を除きます。例:default: break
。
わかりやすい例を次に示します。
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
を使用して次のケース(1つのみ)を実行します。
ケースの最後にあるキーワードfallthrough
は、探しているフォールスルー動作を引き起こし、1つのケースで複数の値をチェックできます。