From: matz@... (Yukihiro Matsumoto) Date: 2002-09-02T18:12:47+09:00 Subject: [ruby-dev:18147] Re: Object#become まつもと ゆきひろです In message "[ruby-dev:18119] Re: Object#become" on 02/09/01, Koji Arai writes: |> cloneでは特異メソッドも含めて引き継ぎます。cloneでもdupでも |> インスタンス変数は引き継ぎます。 | |これは、clone の話ですかね? become に関して言えば、 | | class Foo | @v = 1 | end | | klass = Class.new.become(Foo) | p klass | klass.instance_eval { p @v } | | => ruby 1.7.3 (2002-08-30) [i586-linux] | # | -:7: warning: instance variable @v not initialized | nil | |のように引き継がないようですが、まだ 2002-08-30 では実装が不 |完全ってところでしょうか。 becomeってのは「システムが知らない個別のクラスごとにオブジェ クトの状態コピーを行う」メソッドなのでインスタンス変数のコピー は行う必要はありません(システムが知ってるから)。名前が不適切 なのかも。 |ちなみに、以下のようにすると SEGV するのですが、きっとまつも |とさんの手元では直ってるかな?、 中田さんのご指摘の通りです。