考虑这个代码...
switch(testValue)
{
case .ValueA,
.ValueB,
.ValueC:
return 40
default:
return 0
}
现在,如果我只是检查单个枚举值,我可以这样做......
return (testValue == .ValueA)
? 40
: 0;
但是我想知道我怎么能有类似后者的东西,但是测试像前者这样的倍数,类似于这个伪代码......
return (testValue is in [.ValueA, .ValueB, .ValueC])
? 40
: 0;
我知道我可以用内联数组来做到这一点,就像这样......
return ([SomeEnum.ValueA, .ValueB, .ValueC].Contains(testValue))
? 40
: 0;
。但我希望有更干净的东西。 有吗?
extension SomeEnum {
func isOneOf(values: Value...) -> Bool {
return values.contains(self)
}
}
return testValue.isOneOf(.ValueA, .ValueB, .ValueC) ? 40 : 0