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