正木です。 訂正です。 From: masaki <GEC01122 / nifty.ne.jp> Subject: [ruby-dev:17725] Re: self in block Date: Sat, 20 Jul 2002 13:31:16 +0900 > new の場合与えられた block はそのまま initialize に渡されます。 > 実際に block を解釈するのは initialize なので self は Proc の instance > になるというのが、私の認識ですが、間違っていたら指摘してください。 上の通りなら Proc.new{|n| n==0 ? 1:n*self[n-1]} の self は Proc class 自身を指すことになりそうですが、そうはならない所を みると、 new の段階で context は決めているようです。ただ "block を解釈するのは initialize" が正しければ、 Proc.new{<n> n==0 ? 1:n*self[n-1]} に対して、この段階で context を入れ換えることは可能な気がします。 instance_eval を使えば context の切替えは可能な筈なのですが、以前に 色々試してみたところ結局うまくいかず、諦めた記憶があります。