在我写Swift代码的经验中,我发现.contains(Element)方法非常重要,并且很快意识到苹果公司对其进行了更改...
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
}
我一直在处理一些大的数组,所以我用那个笨重的函数解决了我的问题。
发生了什么?
你怎么使用新方法?
那里的示例超出了我的理解范围。
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
contains
的数组中有哪些值?你能展示一些你尝试使用contains
的代码吗? - AdamPro13contains(where:)
。 - vadiancontains(_:)
或contains(where:)
进行了任何更改 - 您能否详细说明您认为发生了什么变化?[[Int]]
不是Equatable
,因为我们还没有条件一致性 - 因此,您应该使用contains(where:)
和嵌套数组的==
重载进行比较,请参见https://dev59.com/4VwX5IYBdhLWcg3wySB1以了解如何定义它。 - Hamish