如何检查Swift集合中是否有满足某些条件的物品?

Evg*_*nii 5 swift

Swift中有没有一种方法可以检查任何一项是否满足特定条件?

例如,给定一个整数数组,我想看看它是否包含偶数(此代码将不起作用):

[1, 2, 3].any { $0 % 2 == 0 } // true
[1, 3, 5].any { $0 % 2 == 0 } // false
Run Code Online (Sandbox Code Playgroud)

我不完善的解决方案

我目前正在使用以下方法:

let any = [1, 3, 5].filter { $0 % 2 == 0 }.count > 0
Run Code Online (Sandbox Code Playgroud)

我认为这不是很好。

  1. 这有点冗长。

  2. 将为数组中的所有项目调用filter闭包参数,这是不必要的。

有更好的方法吗?

Leo*_*bus 16

您可以使用该方法contains来完成您想要的。它比 filter 更好,因为它不需要数组元素的整个迭代:

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

Xcode 10.2+ https://developer.apple.com/documentation/swift/int/3127688-ismultiple

if numbers.contains(where: { $0.isMultiple(of: 2) }) {
    print(true)
}
Run Code Online (Sandbox Code Playgroud)


Sar*_*ner 5

为Swift 5更新了正确答案:

[1, 2, 3].contains(where: { $0 % 2 == 0 })
Run Code Online (Sandbox Code Playgroud)