From: Takaaki Tateishi Date: 2002-07-20T12:51:50+09:00 Subject: [ruby-dev:17724] Re: self in block At Sat, 20 Jul 2002 12:36:12 +0900, > ります.仮にブロックをcall()/yield()するオブジェクトだとすると,ブ > ロック(Procなど)を他のオブジェクトに渡したり共有することはいくらで > も行うわけですから正木さんの言うところのselfは一意に定まらなくなり > ます.例えば, すいません,ブロックそのものを扱うRubyのオブジェクトがないので共有 できるということは嘘でした.ただ,yield()で呼ぶということは他のオブ ジェクトから呼ぶことはできます. 僕がselfという語句を使うのが嫌なのは,直観的な意味の面もありますし, プログラム見たときに,ブロック内ではselfが違うというのはやはり使いに くいためです. class Foo def initialize(ary) @ary = ary end def each @ary.each{|elem| yield(self,elem) # これどう解釈しますか? } end end インスタンス自身を他のProcオブジェクトなどに渡すということは普通に行 われることで,さらに,それをブロック内で行うことも十分にあります. -- Takaaki Tateishi