第4章 木曜日: クラス定義 - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki

メタプログラミングruby読書会::第4章 木曜日: クラス定義

構成

  • 4.1 クラス定義のわかりやすい説明
    • 4.1.1 クラス定義の中身
    • 4.1.2 カレントクラス
    • 4.1.3 カレントクラスのまとめ
    • 4.1.4 クラスインスタンス変数
    • 4.1.5 Bookwormの作業再び
  • 4.2 クイズ:クラスのタブー
    • 4.2.1 クイズの答え
  • 4.3 特異メソッド
    • 4.3.1 特異メソッドの導入
    • 4.3.2 クラスメソッドの真実
    • 4.3.3 クラスマクロ
  • 4.4 特異クラス
    • 4.4.1 特異メソッドの謎
    • 4.4.2 特異クラスの出現
    • 4.4.3 メソッド探索再び
  • 4.5 クイズ:モジュールの不具合
    • 4.5.1 クイズの答え
  • 4.6 エイリアス
    • 4.6.1 メソッドエイリアス
    • 4.6.2 アラウンドエイリアス
    • 4.6.3 Amazonの問題の解決
  • 4.7 クイズ:壊れた計算
    • 4.7.1 クイズの答え
    • 4.7.2 一日の終わり

疑問・質問・ポイント

  • 4.1 クラス定義のわかりやすい説明
    • p.139 最後の「お知らせ」のところが。モジュールでのお知らせを繰り返さないよ、という意味? (suchi)
    • p.145 コラム ・@@vが定義されているときのカレントクラスはObject ・クラス変数はサブクラスからアクセス可・ゆえにMyClassからObjectの@@vにアクセスできる、というのは理解できたのですが、「クラス変数はクラスではなく、クラス階層に属している」の意味がわかりませんでした(suchi)
    • suchiさんと同じくです。1.@@vはObjectクラスの変数という意味で合っているか 2.この場合のクラス階層とは具体的に何を表しているのか(sea_mountain)
    • p.147 真ん中あたり「class_eval()...を使って、プライベートな @time_class 変数にこのクラスを割り当てる」のclass_evalを使った場合はどう書く?(mackato)
  • 4.2 クイズ:クラスのタブー
  • 4.3 特異メソッド
    • p.150 Object.singleton_methods #=> 特異メソッドを配列で返す
    • p.153 class_definisions/attr.rbのコードで、def my_attribute=(value)の部分で、my_attributeに=が付いている理由(これで起こる処理?)。 基本的な文法の部分だと思います。見覚えがある気がするのですが、うまく見つからなかったのでお聞きしたいです。(sea_mountain)
    • p.158 「特異クラスとinstance_eval()」 「instance_evalを呼ぶことでカレントクラスをレシーバの特異クラスに変更する」の意味がわからなかった(suchi)
  • 4.4 特異クラス
  • 4.5 クイズ:モジュールの不具合
  • 4.6 エイリアス
    • aliasとModule#alias_method() の使い分けは必要? (suchi)
  • 4.7 クイズ:壊れた計算

リンク