我能够毫不费力地重载??
运算符。但是,?
运营商一直在抵制。我想将它作为二进制中缀运算符重载。
以下是我对??
所做的事情:
infix operator ?? {associativity right precedence 110}
public func ?? (condition: Bool, asignment: @autoclosure () -> ()) {
... //some execution
}
同样不适用于?
- 如果我跳过infix operator ? ...
我得到编译错误,表明此类运算符不存在。如果我包含它,我就会在该行上收到编译错误。
有人能超负荷吗?或者某人(来自Swift团队?)的权威人士确认它不打算超载?如果是这样,原因是什么?
答案 0 :(得分:1)
不,您无法覆盖?
- 它是所有三个位置的保留运营商。来自Swift language docs:
令牌
=
,->
,//
,/*
,*/
,.
,前缀运算符<
,&
和?
,中缀运算符?
以及后缀运算符>
,!
和?
都是保留的。这些令牌不能超载,也不能用作自定义操作符。