首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift3 :现在如何处理优先级组运算符应该用主体声明?

Swift3 :现在如何处理优先级组运算符应该用主体声明?
EN

Stack Overflow用户
提问于 2016-08-19 17:57:28
回答 1查看 11.9K关注 0票数 25

以前的Swift 3操作员代码是:

代码语言:javascript
复制
infix operator × {associativity left precedence 150}

但现在,根据Xcode 8 beta 6,这会生成以下警告:

代码语言:javascript
复制
"operator should not be declared with body"

在当前没有文档的情况下,使用优先组谓词的正确方式是什么?

我试过了,但不起作用:

代码语言:javascript
复制
infix operator × : times
precedencegroup times {
     associativity: left 
     precedence: 150
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-19 18:37:29

根据SE-0077,运算符的优先级不再由幻数确定-而是现在使用higherThan和(如果组驻留在另一个模块中) lowerThan precedencegroup关系来定义相对于其他组的优先级。

例如(从evolution proposal):

//模块Swift优先组加法{ higherThan: Range }优先组乘法{ higherThan:加法} //模块A优先组等价{ higherThan:比较lowerThan:加法//可能,因为加法位于另一个模中}插入运算符~:等价1+2~ 3 //与(1 + 2) ~ 3相同,因为加法>等价1*2~3 //与(1 * 2) ~3相同,因为乘法>加法>等价1<2~3 //与1< (2 ~ 3),因为等价性>比较1 += 2~3 //与1 += (2 ~ 3)相同,因为等价性>比较>赋值1 ... 2~3 //错误,因为范围和等价性是不相关的

尽管在您的示例中,您的运算符似乎用于乘法,但您可以简单地使用标准库的MultiplicationPrecedence组,它用于*运算符:

代码语言:javascript
复制
infix operator × : MultiplicationPrecedence

它被定义为:

代码语言:javascript
复制
precedencegroup MultiplicationPrecedence {
  associativity: left
  higherThan: AdditionPrecedence
}

有关标准库优先级组的完整列表以及有关此更改的更多信息,请参阅evolution proposal

票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39036113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档