Swift在Ruby中有像array.reject这样的函数吗?

时间:2016-10-05 22:11:13

标签: ruby swift

Ruby对数组有一个非常优雅的reject函数:

arr = [1, 2, 3, 4, 5, 6]
arr.reject { |a| a < 3 }     #=> [3, 4, 5, 6]

我知道swift有一个filter函数。我想知道Swift是否与reject类似。

1 个答案:

答案 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))}
    }
}