【发布时间】:2020-03-22 22:06:28
【问题描述】:
JLS:
最低优先级运算符是 lambda 表达式的箭头 (->),后跟是赋值运算符。
遵循哪个方向(增加优先级,降低优先级)? - “followed”意味着分配具有更高的优先级或更低的优先级(相对于箭头运算符)?我想,在增加,因为“最低”(箭头)意味着绝对最低。
据我了解,箭头 (->) 应位于此 Princeton 运算符优先级表的最底部(即在所有赋值运算符之下),因此箭头 (->) 具有 0(零)优先级(如根据该表)。
我的理解正确吗?
ExamTray 似乎说箭头优先级至少与赋值相同...另外澄清箭头关联性是 Left->To->Right (与赋值不同)。我没有找到任何关于箭头关联性的 JLS 引用。
我一直认为分配优先级最低是有原因的。
【问题讨论】:
-
The lowest precedence operator is the arrow of a lambda expression. -
是的,你的理解是正确的。
-
如果
->是最低的est,则赋值运算符的优先级不能低于er。 -
IntFunction fo = a->b->a-b; // in test通常暗示 -> 的优先级/关联性。所以我决定澄清 -> 优先级/关联性在整个优先级/关联性表中的位置,因为我不确定。 -
@glglgl 你的
IntUnaryOperator op; op = x -> x;例子很有趣。也许(op = x) -> x不被考虑,因为op = x不是LambdaParameters生产的有效实例?
标签: java java-8 language-lawyer operator-precedence specifications