From: Minero Aoki Date: 2002-07-19T17:25:22+09:00 Subject: [ruby-dev:17718] Re: self in block あおきです。 In mail "[ruby-dev:17717] Re: self in block" Takaaki Tateishi wrote: > それでは,再帰用のクラスを別に作ると言うのはどうでしょうか? > または,再帰用にデフォルトで自分自身を@lambdaに渡すというの > でも良いと思います. 継承してテンプレートメソッドパターンを使う手もありますね。 class CachedSequence def initialize @cache = initial_cache() end def []( n ) @cache[n] ||= calculate(n) end end class Factor < CachedSequence private def initial_cache [1] end def calculate( n ) n * self[n-1] end end Fact = Factor.new p Fact[5] 特異メソッドでもいいですけど。 ------------------------------------------------------------------- 青木峰郎