【Ruby】クラスを作るということ
パーフェクトRubyのメタプロの部分を読んでみます。
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (22件) を見る
勉強ノートとしてここにまとめていきます。 *** 6-1 Classクラスからクラスを作る よく見る以下の様なクラスの定義式
|ruby| class EconomyClass #実装 end ||< 内部ではEconomyClassという定数にClassクラスのインスタンスを割り当てる(頭大文字は定数)、ということを行っているらしい。(クラスなんだかインスタンスなんだかややこしい。) 事実、クラスの定義は以下のように書いてもやっていることは同じ。(ローカル変数の挙動が少し異なる。) |ruby| BusinessClass = Class.new do #実装 end ||<
変数に同様のこと(Classクラスのインスタンスの割り当て)をするとどうなるか?なんてことも書いてある。
|ruby| not_const = Class.new #=> #<Class:0x007fec9b8712b8> not_const.name #=> nil ||< あああ・・・。 ということでクラス名のないクラスの出来上がり。ちなみに以下のコードを実行すると嘘をつかれる。 |ruby| class not_const end ||< || $ ruby not_const.rb not_const.rb:1: class/module name must be CONSTANT ||< *** さらにちなみに さっきのクラス名のないクラス、早くクラス名をつけて欲しいらしく他の定数に代入しただけでクラス名を得る。そして一度名前を得ると簡単には変えられないらしい。おもしろい!! |ruby| not_const = Class.new p not_const.name #=> nil IGiveYouTheName = not_const p not_const.name #=> "IGiveYouTheName" NewName = not_const p not_const.name #=> "IGiveYouTheName" ||<