Sté*_*uca 23 operators swift swift3 xcode8-beta6
运营商的前Swift 3代码是:
infix operator × {associativity left precedence 150}
Run Code Online (Sandbox Code Playgroud)
但是现在,根据Xcode 8 beta 6,这会产生以下警告:
"operator should not be declared with body"
Run Code Online (Sandbox Code Playgroud)
使用优先级组谓词的正确方法是什么,因为现在没有doc存在?
我试过这个,但不起作用:
infix operator × : times
precedencegroup times {
associativity: left
precedence: 150
}
Run Code Online (Sandbox Code Playgroud)
Ham*_*ish 57
根据SE-0077,运算符的优先级不再由幻数确定 - 而是现在使用higherThan和(如果组驻留在另一个模块中)lowerThan precedencegroup关系,以便定义相对于其他组的优先级.
例如(来自进化提案):
Run Code Online (Sandbox Code Playgroud)// module Swift precedencegroup Additive { higherThan: Range } precedencegroup Multiplicative { higherThan: Additive } // module A precedencegroup Equivalence { higherThan: Comparative lowerThan: Additive // possible, because Additive lies in another module } infix operator ~ : Equivalence 1 + 2 ~ 3 // same as (1 + 2) ~ 3, because Additive > Equivalence 1 * 2 ~ 3 // same as (1 * 2) ~ 3, because Multiplicative > Additive > Equivalence 1 < 2 ~ 3 // same as 1 < (2 ~ 3), because Equivalence > Comparative 1 += 2 ~ 3 // same as 1 += (2 ~ 3), because Equivalence > Comparative > Assignment 1 ... 2 ~ 3 // error, because Range and Equivalence are unrelated
虽然在您的情况下,由于您的运算符似乎用于乘法,您可以简单地使用标准库的MultiplicationPrecedence组,该组用于*运算符:
infix operator × : MultiplicationPrecedence
Run Code Online (Sandbox Code Playgroud)
它被定义为:
precedencegroup MultiplicationPrecedence {
associativity: left
higherThan: AdditionPrecedence
}
Run Code Online (Sandbox Code Playgroud)
有关标准库优先级组的完整列表,以及有关此更改的更多信息,请参阅evolution进度.
| 归档时间: |
|
| 查看次数: |
10471 次 |
| 最近记录: |