2009/04/15

"class << self"

そもそも << って何だか覚えてなかったんだけど
検索すると特異クラスとか特異メソッドとかいうらしい
そうそう Ruby はオープンクラスとかいって
まつもと直伝 プログラミングのオキテ 第21回 オープンクラスとRuby on Rails
クラスとかインスタンスに後から色々追加できるんでした

にしても Google の検索は "<<" だけはひっかけないし
"class <<" でも "<< self" でも << が無いような結果しか出さないくせに
"class << self" だと色々ひっかけてくれるという不思議仕様
や、仕様が良く分かってないだけなんでしょうか、むむむん

で、"class << self" っての自体は class method の追加の際に使われるようですが
[ruby-dev:12277] Re: class << self
自クラスで定義されている定数以外は、そのネストの外側のクラス
/モジュールで定義されている定数か、スーパークラスで定義され
ている定数しか見えない

ってことは class << self で呼ばれてる class は何??

で検索してたら次を発見
id:m-hiyama:20080109:1199863428 を Ruby で - sumim’s smalltalking-tos
おー、何じゃこりゃ
メタクラスに出会って困惑することとなってしまいました
Ruby の 1.8 と 1.9 でも挙動違うみたいだし

クラスもオブジェクトなのでクラスのメタクラスもあって
そこにクラスメソッドが住んでるってことかな??

0 件のコメント:

コメントを投稿