Swiftのfallthroughはcaseの条件を評価してくれない
Swiftのswitch文は、どれかcaseに入ると後続のcaseは評価されずにswitch文を出る。
各case毎に暗黙的にbreakが書いてあるのと同じ挙動。
ただ、中には複数のcaseを実行したい場合もあるので、逆break的な意味でfallthroughが用意されている。
ところが、このfallthroughは、本当に直下のcaseをトリガするだけでcaseの条件を評価してくれない。C言語の人には普通らしいけど、なんか違和感。
let integerToDescribe = 5
var description = ""
switchintegerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
description += " 海"
fallthrough
case 5:
description += " ねこ"
fallthrough
case 6:
description += " いぬ"
fallthrough
default:
description += " 山"
}
出力:海 ねこ いぬ 山
C言語的な挙動らしいけど、C言語知らないので、よく分からない。
“NOTEThe fallthrough keyword does not check the case conditions for the switch case that it causes execution to fall into. The fallthrough keyword simply causes code execution to move directly to the statements inside the next case (or default case) block, as in C’s standard switch statement behavior.”抜粋:: Apple Inc. “The Swift Programming Language”。 iBooks. https://itun.es/jp/jEUH0.l