前端之家收集整理的这篇文章主要介绍了
ruby – 一元运算符的运算符优先级,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
关于运算符优先级
like this的一些信息源说,像!,〜,– 这样的一元运算符具有比赋值=更高的优先级.但是,以下表达式是可能的:
!a = true # => false (with warning)
a # => true
~a = 1 # => -2
a # => 1
+a = 1 # => 1
a # => 1
-a = 1 # => -1
a # => 1
考虑到这些结果,我能想到的唯一可能的解释是这些一元运算符的优先级低于赋值.如果是这种情况,则意味着我上面提到的信息是错误的.哪个是对的?有不同的解释吗?
我的编程ruby书(第2版)还列出了一元运算符具有比赋值更高的优先级.
一元运算符被赋予最高优先级.将行解析为〜(a = 1)的原因是因为将行分解为有效语法的优先级高于其他任何内容,包括使用简单变量“a”作为一元运算符操作的表达式.
如果ruby解析器可以使该行的其余部分有效,那么它将使用(~a),但是没有有效的规则而不是matches = something,只有lvalue’=’rvalue.
您可以将“有效语法”视为最高优先级,然后是简单值,常量和变量名称,然后是其下的标准运算符.
原文链接:https://www.f2er.com/ruby/270202.html