操作符的前Swift 3代码是:
infix operator × {associativity left precedence 150}
但现在,根据Xcode 8 beta 6,这会产生以下警告:
"operator should not be declared with body"
什么是正确的方法来使用优先级组谓词,现在没有文档?
我已经尝试了这个,但不行:
infix operator × : times precedencegroup times { associativity: left precedence: 150 }
根据
SE-0077,运算符的优先级不再由幻数确定 – 而是现在使用higherThan和(如果组驻留在另一个模块中)lowerThan precedencegroup关系,以便定义相对于其他组的优先级。
例如(从evolution proposal):
06000
虽然在你的情况下,看起来你的运算符用于乘法,你可以简单地使用标准库的乘法优先组,它用于*运算符:
infix operator × : MultiplicationPrecedence
它被定义为:
precedencegroup MultiplicationPrecedence { associativity: left higherThan: AdditionPrecedence }
有关标准库优先组的完整列表以及有关此更改的更多信息,请参阅evolution proposal。