检查数组是否包含某些内容 - Swift 4

bea*_*a13 9 arrays swift

我发现.contains(Element)方法在我编写Swift代码的最小经验中非常重要,并且很快意识到Apple改变了它...

func contains(check:[[[Int]]], forElement: [[Int]]) -> Bool {
    for element in check {
        if areEqual(element, forElement) {
            return true
        }
    }
    return false
}
func areEqual(_ a:[[Int]], _ b:[[Int]]) -> Bool {
    for i in 0..<a.count {
        if a[i] != b[i] {
            return false
        }
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

我一直在搞乱一些大型数组,所以我用那个笨重的函数解决了我的问题.

发生了什么?

你如何使用新的方式

那里的例子很好,我确信他们打算这样做.

enum HTTPResponse {
    case ok
    case error(Int)
}

let lastThreeResponses: [HTTPResponse] = [.ok, .ok, .error(404)]
let hadError = lastThreeResponses.contains { element in
    if case .error = element {
        return true
    } else {
        return false
    }
}
// 'hadError' == true
Run Code Online (Sandbox Code Playgroud)

rui*_*ano 27

怎么用这个

let numbers = [1, 2, 3, 4]
let contains = numbers.contains(where: { $0 == 3 })
//contains == true
Run Code Online (Sandbox Code Playgroud)

要么

let strings = ["A", "B", "C", "D"]
let contains = strings.contains(where: { $0 == "B" })
//contains == true
Run Code Online (Sandbox Code Playgroud)

即使有其他对象 NSColor

let colors: [NSColor] = [.red, .blue, .green]
contains = colors.contains(where: { $0 == .red })
//contains == true
Run Code Online (Sandbox Code Playgroud)