有没有一种简单的方法可以测试您是否匹配一组枚举? [英] Is there a simple way to test if you match one of a set of enumerations?

查看:49
本文介绍了有没有一种简单的方法可以测试您是否匹配一组枚举?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑此代码...

switch(testValue)
{
    case .ValueA,
         .ValueB,
         .ValueC:

        return 40

    default:

        return 0
}

现在,如果我只是检查一个枚举值,我可以这样做...

Now if I was just checking for a single enumeration value, I could do this...

return (testValue == .ValueA)
    ? 40
    : 0;

但是我想知道如何获得类似于后者的东西,但是要像前者那样测试倍数,类似于此伪代码...

But I'm wondering how I can have something like the latter, but testing for multiples like the former, similar to this pseudo-code...

return (testValue is in [.ValueA, .ValueB, .ValueC])
    ? 40
    : 0;

我知道我可以使用内联数组来做到这一点,

I know I can do it with an inline array, like so...

return ([SomeEnum.ValueA, .ValueB, .ValueC].Contains(testValue))
    ? 40
    : 0;

...但是我希望有一些更清洁的东西.有吗?

...but I'm hoping there's something even cleaner. Is there?

推荐答案

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

返回testValue.isOneOf(.ValueA,.ValueB,.ValueC)吗?40:0

这篇关于有没有一种简单的方法可以测试您是否匹配一组枚举?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆