有没有一种简单的方法来测试你是否匹配一组枚举中的一个?

时间:2016-07-12 19:03:38

标签: swift conditional-operator ternary

考虑这段代码......

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;

...但我希望那里有更清洁的东西。有吗?

1 个答案:

答案 0 :(得分:0)

extension SomeEnum {
    func isOneOf(values: Value...) -> Bool {
        return values.contains(self)
    }
}

return testValue.isOneOf(.ValueA, .ValueB, .ValueC) ? 40 : 0