Ruby对数组有一个非常优雅的reject
函数:
arr = [1, 2, 3, 4, 5, 6]
arr.reject { |a| a < 3 } #=> [3, 4, 5, 6]
我知道swift有一个filter
函数。我想知道Swift是否与reject
类似。
答案 0 :(得分:4)
extension Array {
func reject(_ isRejected: (Element) -> Bool) -> [Element] {
return self.filter{ !isRejected($0) }
}
}
现在确实如此。
更好的是,你可以推广到任何Sequence
,甚至可以处理抛出谓词:
extension Sequence {
func reject(_ isRejected: (Self.Iterator.Element) throws -> Bool) rethrows -> [Self.Iterator.Element] {
return try self.filter{ !(try isRejected($0))}
}
}