Swift 3中的数组扩展

时间:2016-09-19 12:23:20

标签: swift3

如果Bool数组中的元素都为true,则以下filter方法将返回true。

print([false, true].filter({!$0}).isEmpty) // yields false
print([true, true].filter({!$0}).isEmpty)  // yields true

如何在Swift 3中的Array上创建一个扩展方法,允许我这样表示它:

[false, true].allElementsTrue()

1 个答案:

答案 0 :(得分:1)

这应该回答你的问题:

view::join

extension Collection where Iterator.Element == Bool {

    var allElementsTrue: Bool {
        return self.filter({!$0}).isEmpty
    }

}

但是,如果没有要提供的参数,我更喜欢使用计算属性。

注意:作为替代方案,您也可以extension Collection where Iterator.Element == Bool { func allElementsTrue() -> Bool { return self.filter({!$0}).isEmpty } } 更有效地获得相同的结果(短路)。