2011年3月 9日

[ruby-list:47943] Re: 特異クラス、特異メソッド

> つまり、クラスをインスタンス化した段階で、すでに
>
> class << self
> end
>
> を自動的に持っているというイメージなのでしょうか?

私も昔は 「最初から特異クラスが存在するのかな」 と思っていたのですが、

そうではないようです。 Ruby 処理系の実装に詳しいわけではないので
自分で調べたわけではないんですが。。

前のメールに書いた記事中 [1] に
『class << obj; end

この式の意味するところは、
- objの特異クラスの定義を開始する
- objが特異クラスを持っていなければ(普通のクラスに直接属しているなら)、新たに特異クラスを作成する
だ。

従って、それまで独自の特異クラスを持っていなかったオブジェクトも特異クラスを持ってしまう。』
と書いてあるので、
「特異クラスを取得する構文が使用されたとき、まだ特異クラスが
存在しないならば自動的に作られる」
という感じだと思います。

[1] http://yugui.jp/articles/768#label-7

--
信岡 ゆう (NOBUOKA Yu)
http://www.vividcode.info/


投稿者 xml-rpc : 2011年3月 9日 18:55
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/102486
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。