1
在Ruby中,为什么你写的:在一个线路条件分配未定义的变量
# b is not defined yet.
#
if b = true
a = b
end
# => a = true
但不是一个班轮:
a = b if b = true
# => NameError: undefined local variable or method `b' for main:Object
在Ruby中,为什么你写的:在一个线路条件分配未定义的变量
# b is not defined yet.
#
if b = true
a = b
end
# => a = true
但不是一个班轮:
a = b if b = true
# => NameError: undefined local variable or method `b' for main:Object
因为Ruby解释器“创造”一个地方当它看到一个任务时变量。
在第二种情况下,它还没有看到赋值,所以当解析表达式时变量不存在。
更确切地说,一个方法首先被解析为一个内部表示,然后,最终可能调用代码并实际执行。
变量在解析过程中“创建”。这实际上更像是一个声明问题,它只是意味着解释者意识到他们。它们不会被创造出来,直到周围的方法被某人调用时才被赋予空间或价值。