有可能超载"?"运营商?

时间:2014-12-01 18:24:08

标签: swift operator-overloading operators new-operator ternary-operator

我能够毫不费力地重载??运算符。但是,?运营商一直在抵制。我想将它作为二进制中缀运算符重载。

以下是我对??所做的事情:

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

同样不适用于? - 如果我跳过infix operator ? ...我得到编译错误,表明此类运算符不存在。如果我包含它,我就会在该行上收到编译错误。

有人能超负荷吗?或者某人(来自Swift团队?)的权威人士确认它不打算超载?如果是这样,原因是什么?

1 个答案:

答案 0 :(得分:1)

不,您无法覆盖? - 它是所有三个位置的保留运营商。来自Swift language docs

  

令牌=->///**/.,前缀运算符<&?,中缀运算符?以及后缀运算符>!?都是保留的。这些令牌不能超载,也不能用作自定义操作符。