0

我能够在没有太多麻烦的情况下将??运营商过载。但是,?运营商保持抵抗。我想将它重载为二进制中缀运算符。是否有可能超载“?”运营商?

以下是我与??

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

同样不适用于?工作 - 如果我跳过infix operator ? ...我得到编译错误,这样的操作不存在。如果我包含它,则会在该行上发生编译错误。

有人能够超载吗?还是有人(来自Swift团队?)确认其无意超载?如果是这样,原因是什么?

回答

1

不,您不能覆盖? - 它是所有三个位置中的保留运算符。从Swift language docs

令牌=->///**/.,前缀运营商<&,并且?,管道符?,而后缀运算符>!?是保留。这些令牌不能被重载,也不能被用作自定义操作符。