From: Shin-ichro Hara Date: 1998-07-16T17:27:18+09:00 Subject: [ruby-dev:3318] Re: REQUEST id2name 原です。 In message "[ruby-dev:3314] Re: REQUEST id2name" on 98/07/16, Yukihiro Matsumoto writes: |まつもと ゆきひろです ||名前も気に入らないんでしょうきっと。(^^; | |名前はそれほどでもないです.採用するならきっと define_method |にするでしょうけど.問題はスコープですね. やはり、、、 ブロックで define_method ができるとすると次の様に見かけ上イ ンスタンス変数が once から消えて面白いかなと思ったんです。 (once の仕様としてはいまいちだが) ### 001 def define_method(n) @method001 = proc eval("def self.#{n.id2name}; @method001.call; end") end ### def who_calls? caller(2)[0] =~ /`(.+)'/; $1.intern end def once result = yield define_method(who_calls?) { result } result end class Foo def bar once { print "do once.\n" "hello.\n" } end end foo = Foo.new print foo.bar print foo.bar print foo.bar