From: Takaaki Tateishi Date: 2002-06-02T21:15:57+09:00 Subject: [ruby-dev:17276] blocks and local variables 立石です. 以前 ruby-list で行ったブロック変数をブロックに対する局所変数 にできないかということについてですが,コールバックを定義する場 合,定義した場所を意識して変数を付けるわけではなく,コールバッ クが実行される(変数に値が入る)場所での変数の役割を意識すると思 います. ブロックを考えた場合でも同じで,ブロックを作った場所でのブロッ ク変数の役割を考えるわけではなく,ブロックが使われる場所での 変数の役割を考えると思います. そのため,定義された時点での変数と重なると都合が悪いと思うので すがどうでしょうか? たとえば,こんな感じのコードなどを見て思ったのですが… class Foo def set_callback(&f) @callback = f end def set_data(data) @data = data end def do_callback set_data(@callback.call(@data)) end end data = 0 # set_data()に渡す引数として data と名前を付けた. foo = Foo.new foo.set_data(data) foo.set_callback{|data| data + 1} # @dataの値が入るものとして data と名前を付けた foo.do_callback() -- Takaaki Tateishi