运算符优先级的奇数

时间:2015-03-28 09:55:02

标签: swift operator-precedence

只是好奇..有一个特殊的原因(历史或某种)为什么Swift使用160到90之间的数字来表示运算符的默认优先级。感谢

1 个答案:

答案 0 :(得分:0)

根据Apple的Operation Declaration documentation

  

优先级可以是0之间的任何整数(十进制整数)   到255

     

虽然优先级是特定的数字,但它很重要   仅相对于另一个运营商。

简单的答案是90到160落在0到255范围的中心附近。

现在,如果您检查所有Apple的binary expressions documentation,您会看到默认运算符的范围从优先级90到优先级160,正如您在问题中所述。这是70的范围,因为优先级值彼此相对,所以可以选择此范围的任何起点/终点。

但是,如果他们将默认值设置为0到70或185到255,那么当用户创建自定义运算符时,他们不能给它一个比0更低的优先级或高于255的优先级,从而使运算符相等分别优先于赋值运算符或指数运算符。

因此,唯一合乎逻辑的做法是在0到255范围的中间开始此范围,而不是将范围的默认值设置为93 - 163(最接近范围的实际中心为可能),他们选择选择10(90到160)的倍数,因为实际上这些值除了彼此之外无关紧要。