如果我有这个枚举:
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/