我希望像anArray.contains(nil)
可以工作,但事实并非如此。Swift最好的方法来检查收集类型中的零
我能做的最好的就是创建这样一个扩展:
extension Array {
func containsNil() -> Bool {
return self.filter({ $0 == nil }).count > 0
}
}
没有其他的想法?
我希望像anArray.contains(nil)
可以工作,但事实并非如此。Swift最好的方法来检查收集类型中的零
我能做的最好的就是创建这样一个扩展:
extension Array {
func containsNil() -> Bool {
return self.filter({ $0 == nil }).count > 0
}
}
没有其他的想法?
您的扩展程序将始终必须遍历所有元素,才能计算nil
元素的数量。如果计数大于0,则返回。您正在收集比您需要的更多信息。你似乎没有使用nil元素的数量。你所关心的只是阵列内部是否有零。
相反,您可以简单地遍历数组,并在第一次找到nil
时返回true。
是的,我知道,但这需要更多的代码行。我想避免这种情况。 – BridgeTheGap
如果你真的想把它缩短,你可以这样做:'.contains {$ 0 == nil}'。但先检查你的问题的意见。正如nhgrif所说,这可能是一个XY问题。 – Eendje
如果包含'nil',你想要做什么? – Eendje
你的用例是什么?只能包含可选项的数组可以包含'nil'。你想防止'无'值?如果是这样,只需将数组变平:let vals:[Int?] = [1,2,3,nil]; let flat = vals.flatMap {$ 0} as [Int?];' – JAL
你现在有两条评论关于用例的原因是因为这几乎都是确定性的[XY问题](http:// meta。 stackexchange.com/q/66377/244435)。 – nhgrif