我將嘗試使用下面的代碼將邏輯運算符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