Ruby クロージャ - ソースコード備忘録を読んで、自分のRubyにおけるブロックと変数の理解が怪しいことがわかった。で、ちょっと普通とは違うアプローチからの整理を試みて、理解できた気がするので書いてみます。誤りを教えてくれればうれしいです。 ローカル変数 プログラムコードはプログラマの意思をインタプリタに伝えるものだ。Rubyではオブジェクトに処理を依頼する形でプログラムを組成するけど、そのとき変数はプログラマが対象のオブジェクトを指し示すためのラベルとして用いられる。すなわち変数はオブジェクト参照ラベルだ。 複数の手続きブロックで構造化される現代のプログラミングにおいては、1つの変数の適用範囲はそれが定義されている手続きブロックに限定されるのが普通だ。 Rubyにおいてメソッド定義はこの手続きブロックを新たに作る。だから以下の例でcounterメソッド内の変数nは未定義となる n =