如果我有这个枚举:

enum TestEnum {
    case typeA
    case typeB(Int)
}

这个数组:let testArray = [TestEnum.typeB(1), .typeA, .typeB(3)]
是否有比以下方法更丑陋的方法来查找该数组中是否包含某项:
if testArray.contains(where: {if case .typeA = $0 { return true }; return false}) {
    print("contained")
} else {
    print("not found")
}

最佳答案

为了使它更具可读性,您可以像下面这样向您的枚举添加一个函数:

enum TestEnum {
    case typeA
    case typeB(Int)

    static func ==(a: TestEnum, b: TestEnum) -> Bool {
        switch (a, b) {
        case (typeB(let a), .typeB(let b)) where a == b: return true
        case (.typeA, .typeA): return true
        default: return false
        }
    }
}

let testArray = [TestEnum.typeB(1), .typeA, .typeB(3)]

if testArray.contains(where: { $0 == .typeA }) {
    print("contained")
} else {
    print("not found")
}

关于ios - 在数组中找到一个枚举类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47392436/

10-12 14:44