我将尝试使用下面的代码将逻辑运算符OR(||
)减少Bool
秒的阵列,但是我得到一个错误:使用逻辑运算符,结合封闭在减少
func reduceBools(values: [Bool]) -> Bool {
return values.reduce(false, combine: ||)
}
Ambiguous reference to member '||'
类似于整数的代码就像一个魅力。
func reduceInts(values: [Int]) -> Int {
return values.reduce(0, combine: +)
}
我能够使其通过添加||
功能(下面的代码)或使用{ $0 || $1 }
关闭工作,但我不喜欢这些方法,我宁愿只是传递操作。
func ||(lhs: Bool, rhs: Bool) -> Bool {
return lhs || rhs
}
同样的事情发生在逻辑和(&&
)运算符。
如何在不使用上面的黑客的情况下使其工作?
这似乎是一个bug /限制由于'||'和''&&的 “autoclosure” 参数。比较http://stackoverflow.com/questions/28648268/what-is-the-type-of-the-logical-operators和以下评论。 –
@MartinR感谢您的链接!我在想,我只是一个愚蠢的人... – user3441734
@MartinR似乎是这样的情况:/有没有任何rdar,所以我可以欺骗它? – fpg1503