ふなばです。 >本質的には同じでかまわないということでしたら,Module#attrの >ような「メソッドを追加するメソッド」を用意すればよいわけです >から,evalなどを使って隠すことが出来るかも知れません. ちょっとだけ書きましたけど、イテレータをつかったものはやってみたんです。 def foo once('foo') do 安くない処理 end end といったふうにつかうもので、ようするに eval してるんですけど。散々お世 話になっている eval なんですが、なんとなく避けたい気分てものがあるみた いなんですねえ。とりあえずデッチあげた once はこんな感じでした。 def var(x) '@' + x.sub(/\?/no, '_p') end def once(*xs) for x in xs y = var(x) eval "def self.#{x}; #{y} end" end ys = xs.collect {|x| var(x)}.join(',') eval "#{ys} = yield" end --Tadayoshi "once in a runtime" Funaba