fallthrough
关键字意味着"在不执行任何额外检查的情况下进入下一个案例..A
遇到以下情况时,您的代码将执行以下四种方法:
someMethodSpecificToA() someMethodSpecificToTheseThreeLetters() someMethodSpecificToE() aMethodIShouldCallOnVowels()
因为它会进入case .A
,并一直"堕入" aMethodIShouldCallOnVowels()
.
由于没有fallthrough
对.A
和.E
,曾经的第一个实例.B .C .D
上达到的情况下switch
,它会继续一路.A .E
.此时没有进行额外的切换,并且.B .C .D
已经通过初始跳转进行了探索.
这就是为什么你的方法不起作用的原因:你需要将你的方法switch
分成两个单独的方法,或者为.E
和添加一个特殊的情况.A
.
switch someEnum { case .A .E: switch someEnum { case .A: someMethodSpecificToA() case .E: someMethodSpecificToE() } aMethodIShouldCallOnVowels() case .B, .C, .D: someMethodSpecificToTheseThreeLetters() aMethodIShouldCallOnAllConsonants() }