我想要「賦值或」和「賦值和」運算符。根據Swift Standard Library Operators Reference,這些操作符是在標準庫中定義的。實現|| =和&& =操作符:運算符實現沒有匹配運算符聲明
我試圖執行這些運營商Bool
值:
func ||= (inout lhs: Bool, rhs: Bool) {
lhs = lhs || rhs
}
func &&= (inout lhs: Bool, rhs: Bool) {
lhs = lhs && rhs
}
但是編譯器會抱怨:operator implementation without matching operator declaration
這可以通過定義運營商固定:
infix operator ||= { associativity right precedence 90 }
infix operator &&= { associativity right precedence 90 }
但我不當然,這是正確的做法。爲什麼標準庫中的定義不起作用?此外,我注意到,根據運營商的參考標準庫沒有任何類型的這些運營商的實施。這是爲什麼?這是一個疏忽還是有意的?
有趣。但是你的實現對我來說看起來不錯。 –
@ J.Wang是的,它似乎工作正常,但我想知道如果重新實現這些運營商是正確的事情做 –
@dfri啊,我明白了,謝謝!你會發布這個答案嗎? –