【发布时间】:2019-07-31 13:05:24
【问题描述】:
这是来自 ruby-doc 第 4.3 节中给出的示例,在以下链接中:
解释是这样的:
Ruby 寻找赋值语句。如果在源代码中的某个点之前使用
a'' it sees it being assigned to, it decides to parsea'' 作为变量,否则将其视为方法。
示例如下
def a
print "Function 'a' called\n"
99
end
for i in 1..2
if i == 2
print "a=", a, "\n"
else
a = 1
print "a=", a, "\n"
end
end
输出为
a=1
Function 'a' called
a=99
但是从代码中可以明显看出,当 i 为 1 时,a 被分配给 1,并且 1 被打印为 a 的值。然后对于 i = 2,调用方法“a”。
现在如果我在 for 循环之外打印 'a' 会发生什么?我得到了值 1,但我不知道这怎么可能。如果从之前的方法值重新分配 a 到 1 会在任何地方改变它,那么在 i = 2 期间,输出也应该是 1。如果我错了,请纠正我。
【问题讨论】:
标签: ruby