0

我能夠在沒有太多麻煩的情況下將??運營商過載。但是,?運營商保持抵抗。我想將它重載爲二進制中綴運算符。是否有可能超載「?」運營商?

以下是我與??

infix operator ?? {associativity right precedence 110} 
public func ?? (condition: Bool, asignment: @autoclosure() ->()) { 
    ... //some execution 
} 

同樣不適用於?工作 - 如果我跳過infix operator ? ...我得到編譯錯誤,這樣的操作不存在。如果我包含它,則會在該行上發生編譯錯誤。

有人能夠超載嗎?還是有人(來自Swift團隊?)確認其無意超載?如果是這樣,原因是什麼?

回答

1

不,您不能覆蓋? - 它是所有三個位置中的保留運算符。從Swift language docs

令牌=->///**/.,前綴運營商<&,並且?,管道符?,而後綴運算符>!?是保留。這些令牌不能被重載,也不能被用作自定義操作符。