Swift中如何检查枚举数组中是否存在指定枚举case?有无更优方案?
检查枚举数组中是否存在特定Case的更优实现方式
对于你这种无关联值的枚举(且已遵循RawRepresentable,比如这里的Int类型枚举),Swift会自动为其合成Equatable协议实现,因此完全不需要用contains(where:)加闭包的写法,直接使用contains(_:)方法即可,代码更简洁高效:
public enum Product: Int { case tv case video case product1 case product2 } let products: [Product] = [.tv, .product1] // 直接传入目标枚举case即可完成检查 let existsProduct = products.contains(.video) print(existsProduct) // 输出 false
补充说明
- 只有当枚举带关联值,且需要针对关联值做自定义匹配时,才需要用到
contains(where:)结合case模式匹配的写法。 - 你的原代码逻辑是正确的,但在当前场景下属于冗余写法,利用Swift自动合成的
Equatable实现能大幅简化代码。
内容的提问来源于stack exchange,提问作者jacobcan118
相关产品推荐
相关产品推荐

