有没有一种简单的方法来测试您是否匹配一组枚举之一



考虑这个代码...

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

最新更新