在 Swift 6.0 里,新增了一个 count(where:) 的函数,它的效果相当于在一条语句中调用 filter 和 count。
使用它可以避免了创建一个立即被丢弃的新数组,并且提高了代码的可读性。下面我们来看下它是如何使用的。
此示例创建一个整型类型的数组,并统计大于或等于 80 的元素个数:
let scores = [120, 60, 87]
let passCount = scores.count { $0 >= 80 }
下面这个例子是用于筛选名字前缀为 Terry 开头的姓名的个数,示例代码如下:
let pythons = ["Eric Idle", "Graham Chapman", "John Cleese", "Michael Palin", "Terry Gilliam", "Terry Jones"]
let terryCount = pythons.count { $0.hasPrefix("Terry") }
需要注意的是,这个函数适用于所有符合 Sequence 协议的类型。也就是说,你不仅可以在数组上使用该函数,你也可以在集合和字典上使用它。