我很难理解是什么使以下行为成为可能(取自红宝石镐书):
def power_proc_generator
value = 1
lambda {value += value}
end
power_proc = power_proc_generator
3.times {puts power_proc.call} # => 2,4,8
3.times {puts power_proc_generator.call()} # => 2,2,2
我看不到“power_proc”对象如何允许值继续加倍,因为我假设(似乎错误地)每次调用都会将值重新分配给 1。
我的问题是为什么 "3.times {puts power_proc.call}" 结果是 "2,4,8" 而不是 "2,2,2" ?