[ruby-list:47943] Re: 特異クラス、特異メソッド
From:
"Y. NOBUOKA" <nobuoka@...>
Date:
2011-03-09 09:55:54 UTC
List:
ruby-list #47943
> つまり、クラスをインスタンス化した段階で、すでに > > class << self > end > > を自動的に持っているというイメージなのでしょうか? 私も昔は 「最初から特異クラスが存在するのかな」 と思っていたのですが、 そうではないようです。 Ruby 処理系の実装に詳しいわけではないので 自分で調べたわけではないんですが。。 前のメールに書いた記事中 [1] に 『class << obj; end この式の意味するところは、 - objの特異クラスの定義を開始する - objが特異クラスを持っていなければ(普通のクラスに直接属しているなら)、新たに特異クラスを作成する だ。 従って、それまで独自の特異クラスを持っていなかったオブジェクトも特異クラスを持ってしまう。』 と書いてあるので、 「特異クラスを取得する構文が使用されたとき、まだ特異クラスが 存在しないならば自動的に作られる」 という感じだと思います。 [1] http://yugui.jp/articles/768#label-7 -- 信岡 ゆう (NOBUOKA Yu) http://www.vividcode.info/