运算符优先级的奇数
odd numbers for operator precedence levels
只是好奇..Swift 使用 160 到 90 之间的数字来表示运算符的默认优先级是否有特殊原因(历史原因或某种原因)。谢谢
根据 Apple 的 Operation Declaration documentation
The precedence level can be any whole number (decimal integer) from 0
to 255
Although the precedence level is a specific number, it is significant
only relative to another operator.
简单的答案是 90 到 160 落在 0 到 255 范围的中心附近。
现在,如果您检查 Apple 的所有 binary expressions documentation,您会看到默认运算符的优先级范围从 90 到 160,如您在问题中所述。这是一个 70 的范围,因为优先级值是相互关联的,所以可以选择该范围内的任何 starting/ending 点。
但是,如果他们将默认值设置为 0 到 70 或 185 到 255,那么当用户创建自定义运算符时,他们无法为其赋予低于 0 的优先级或高于 255 的优先级,从而导致运算符分别等于赋值运算符或指数运算符的优先级。
因此,唯一合乎逻辑的做法是从 0 到 255 范围的中间开始这个范围,而不是将范围的默认值设置为 93 - 163(最接近实际中心的值)范围尽可能大),他们选择了 10 的倍数(90 到 160),因为实际上 这些值并不重要,除非彼此相关。
只是好奇..Swift 使用 160 到 90 之间的数字来表示运算符的默认优先级是否有特殊原因(历史原因或某种原因)。谢谢
根据 Apple 的 Operation Declaration documentation
The precedence level can be any whole number (decimal integer) from 0 to 255
Although the precedence level is a specific number, it is significant only relative to another operator.
简单的答案是 90 到 160 落在 0 到 255 范围的中心附近。
现在,如果您检查 Apple 的所有 binary expressions documentation,您会看到默认运算符的优先级范围从 90 到 160,如您在问题中所述。这是一个 70 的范围,因为优先级值是相互关联的,所以可以选择该范围内的任何 starting/ending 点。
但是,如果他们将默认值设置为 0 到 70 或 185 到 255,那么当用户创建自定义运算符时,他们无法为其赋予低于 0 的优先级或高于 255 的优先级,从而导致运算符分别等于赋值运算符或指数运算符的优先级。
因此,唯一合乎逻辑的做法是从 0 到 255 范围的中间开始这个范围,而不是将范围的默认值设置为 93 - 163(最接近实际中心的值)范围尽可能大),他们选择了 10 的倍数(90 到 160),因为实际上 这些值并不重要,除非彼此相关。