From: masaki Date: 2002-07-18T21:02:27+09:00 Subject: [ruby-dev:17709] Re: self in block 正木です。 From: Tanaka Akira Subject: [ruby-dev:17707] Re: self in block Date: Thu, 18 Jul 2002 12:20:00 +0900 > define_method を使って Fact にブロックをメソッドとして植え付けてしまえ > ばいいのでは? > > class Sequence > def initialize(list=[],*parameter) > @list=list > @para=parameter > class << self > define_method(:call, lambda) > end > end > > def [](n) > @list[n] || @list[n]=call(n) > end > end > > Fact=Sequence.new([1]){|n| n*self[n-1]} ありがとうございます。早速試してみましたが現在の version 1.6.7 では うまくいかないようです。そのうち 1.7 で試してみます。 define_method の仕様が分からないので間違っているかもしれませんが、 これでうまく行ったとしても、この方法は解決策としては本筋でないような 気がします。 self[n] の形だけではなく、他の method も self 自身も使いたいときがあります。 やはり block 内の self と initialize 内の self とを一致させるのが、一番 すっきりしています。