次の動作を可能にする理由を理解するのに苦労しています(ルビーのつるはしの本から取得):
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」オブジェクトが値を2倍にし続ける方法がわかりません(間違っているようです)各呼び出しが値を1に再割り当てすると仮定します。
私の質問は、「3.times {puts power_proc.call}」が「2,2,2」ではなく「2,4,8」になるのはなぜですか?