优先级如何应用于具有赋值和条件的表达式?
How does precedence apply on an expression with an assignment and a conditional?
我有以下简单片段:
var = 1 if false
我希望它的计算结果为:
(var = 1) if false
所以 var
将是未定义的。然而,var
被定义并接收一个 nil
作为它的值。
我在这里错过了什么?
Ruby 在解析时识别局部变量。所以,在你的情况下,即使它没有设置为 1
(因为这个表达式的优先级就像你写的那样),ruby 知道它是局部变量并且不会引发 NameError
.
Ruby 解析器定义 var
当它在表达式的左侧看到它时(即使它在没有 运行 的条件内部)。所以 nil
看起来是一个合适的值。
我有以下简单片段:
var = 1 if false
我希望它的计算结果为:
(var = 1) if false
所以 var
将是未定义的。然而,var
被定义并接收一个 nil
作为它的值。
我在这里错过了什么?
Ruby 在解析时识别局部变量。所以,在你的情况下,即使它没有设置为 1
(因为这个表达式的优先级就像你写的那样),ruby 知道它是局部变量并且不会引发 NameError
.
Ruby 解析器定义 var
当它在表达式的左侧看到它时(即使它在没有 运行 的条件内部)。所以 nil
看起来是一个合适的值。