Swift3:现在应该如何使用主体声明操作符优先级组?

斯特凡·德·卢卡:

以前的Swift 3运算符代码为:

infix operator × {associativity left precedence 150}

但是现在,根据Xcode 8 beta 6,这将产生以下警告:

"operator should not be declared with body"

什么是使用prioritygroup谓词的正确方法,因为目前没有文档?

我已经尝试过了,但是不起作用:

infix operator × : times
precedencegroup times {
     associativity: left 
     precedence: 150
}
哈米什(Hamish):

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

例如(根据发展建议):

// 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

它定义为:

precedencegroup MultiplicationPrecedence {
  associativity: left
  higherThan: AdditionPrecedence
}

有关标准库优先级组的完整列表,以及有关此更改的更多信息,请参见演进建议

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Swift 3中使用新的优先级组声明指数/幂运算符?

使用堆栈将中缀表达式转换为前缀时,如果扫描的操作符和堆栈顶部的操作符具有相同的优先级,应该怎么做?

在两次递增和间接操作符的情况下,C如何处理操作优先级?

使用Swift 3运算符优先级和部分函数应用进行实验

Swift中出现“相邻运算符在非关联优先级组'ComparisonPrecedence'中”

如何在优先级较高的操作之前在 C 中运行优先级较低的操作

位操作运算符的优先级对输出的影响

如何使用调度或操作队列动态更改后台操作优先级。

Swift Calculator:运算符优先级问题

Java优先级队列应该如何工作?

使用更大和向量声明优先级队列

Python如何确定==的操作数优先级?

使用EBNF描述运算符优先级

使用cout和指针的运算符优先级

如何使用let声明Haskell中的函数(仅单行操作符)

了解优先级如何与Java优先级队列中的compareTo一起使用?

“分配”操作中的操作优先级?

如何在Swift中使用名称创建背景优先级SERIAL队列?

如何按项目类型对数组进行排序,其中字符串应该出现在第一个,然后是浮点数和整数,同时保持相同的类型优先级并且不使用额外的数组

Ansible组vars优先级

组优先级可用吗?

js regexp-组优先级

Python是==运算符优先级

运算符优先级的奇数

运算符的优先级:>和==

运算符优先级:!并等待

下标运算符优先级

运算符的优先级?

PHP运算符的优先级