saw*_*awa 8 ruby variable-assignment operator-precedence unary-operator
运算符优先级的一些信息源这样说,一元运算符一样!,~,+,-具有较高的比分配优先级=.但是,以下表达式是可能的:
!a = true # => false (with warning)
a # => true
~a = 1 # => -2
a # => 1
+a = 1 # => 1
a # => 1
-a = 1 # => -1
a # => 1
Run Code Online (Sandbox Code Playgroud)
考虑到这些结果,我能想到的唯一可能的解释是,这些一元运算符具有更低比分配优先级.如果是这种情况,则意味着我上面提到的信息是错误的.哪个是对的?有不同的解释吗?
我的 ruby 编程书(第二版)也列出了一元运算符,其优先级高于赋值。
一元运算符被赋予最高优先级。该行被解析为 ~ (a = 1) 的原因是因为将该行分解为有效语法的优先级高于其他任何内容,包括使用简单变量“a”作为一元运算符操作的表达式。
如果 ruby 解析器可以使该行的其余部分有效,那么它会使用 (~ a),但是没有比 matches = Something 更有效的规则,只有左值 '=' 右值。
您可以将“有效语法”视为首要任务,然后是简单值、常量和变量名称,最后是标准运算符。
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |