2017/04/23

クロージャがいつ変数を評価するか

a = 10                # main に変数`a`を定義する。
f1 = -> { a * 2 }     # クロージャは変数`a`を包む。`a`の参照するオブジェクト「`10`」を包むのではない

a = 100               # 変数`a`の参照するオブジェクトを変更
p f1.()     #=> 200   # クロージャ実行時に`a`が参照するオブジェクト「`100`」を評価
クロージャがいつ変数を評価するかメモメモ。それにしてもここ丁寧にまとめてくださってます。