From: masaki Date: 2002-07-20T16:00:29+09:00 Subject: [ruby-dev:17728] Re: self in block 正木です。 訂正です。 From: masaki 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==0 ? 1:n*self[n-1]} に対して、この段階で context を入れ換えることは可能な気がします。 instance_eval を使えば context の切替えは可能な筈なのですが、以前に 色々試してみたところ結局うまくいかず、諦めた記憶があります。