正如标题所说,我想简化一个 switch-case 语句。我目前在我的 switch-case 语句中有这个:
switch(someEnum) {
case EnumType.A:
SomeMethodSpecificToA();
AMethodIShouldCallOnAllVowels();
break;
case EnumType.B:
case EnumType.C:
case EnumType.D:
SomeMethodSpecificToTheseThreeLetters();
AMethodIShouldCallOnAllConsonants();
break;
case EnumType.E:
SomeMethodSpecificToE();
AMethodIShouldCallOnAllVowels();
break;
// All other letters, also containing the vowels & consonants methods
}
所以我知道我可以链接多个 case
语句让它们做同样的事情,但我不知道我怎样才能做到让 2 个字母做 2 个独立的事情然后失败对于第二个陈述,对于所有元音(或所有辅音)。在 Swift 中,我会做这样的事情:
func test(someEnum: EnumType) {
switch someEnum {
case .A:
someMethodSpecificToA()
fallthrough
case .B, .C, .D:
someMethodSpecificToTheseThreeLetters()
fallthrough
case .E:
someMethodSpecificToE()
fallthrough
case .A, .E:
aMethodIShouldCallOnVowels()
case .B, .C, .D:
aMethodIShouldCallOnAllConsonants()
}
}
有没有办法不使用 2 个 switch 语句来做到这一点?这似乎是多余的,因为我已经打开了那个变量。
我只是将 case
限制为 Specific() 的
,并在 switch block
之后放置一个简单的 if-else:
if IsVowel
AMethodIShouldCallOnAllVowels();
else
AMethodIShouldCallOnAllConsonants();
另请查看 default:
(但在这种情况下可能没有用)。
我是一名优秀的程序员,十分优秀!