-
Notifications
You must be signed in to change notification settings - Fork 8
第2章 火曜日: メソッド
yowasou edited this page Aug 13, 2023
·
22 revisions
メタプログラミングruby読書会::第2章
- 2.1 重複問題
- 2.1.1 レガシーシステム
- 2.1.2 ダブル、トリプル、トラブル
- 2.2 動的メソッド
- 2.2.1 メソッドを動的に呼び出す
- 2.2.2 メソッドを動的に定義する
- 2.2.3 Computerクラスのリファクタリング
- 2.3 method_missing()
- 2.3.1 method_missing()のオーバーライド
- 2.3.2 ゴーストメソッド
- 2.3.3 動的プロキシ
- 2.3.4 Computerクラスのリファクタリング(再び)
- 2.4 クイズ: バグ退治
- 2.4.1 クイズの答え
- 2.5 もっとmethod_missing()
- 2.5.1 メソッド名が衝突したら
- 2.5.2 まとめ
-
2.1 重複問題
-
2.2 動的メソッド
- p77 confオブジェクトには admin= メソッド等が定義済み(定義されていると期待してもよい)なのでしょうか。続きを読むと、定義済み、動的メソッド、ゴーストメソッドのいずれかであるとわかり、流れ的にはここでは定義済みのような気がしますが、初読のときにイメージできず悩みました。 (kiwofusi)
- p77 conf.send("#{k}=", v)となっているが、=を付けなければならないのか。メソッドの命名規約?(sea_mountain)
- p80 コード例、componentメソッド内の"get_#{name}_price"のnameはto_sしなくてもいい?(sea_mountain)
- 式展開は「式の内容(を文字列化したもの)を埋め込むことができます。」( http://www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html#a.bc.b0.c5.b8.b3.ab )とのことなので、暗黙的に to_s() されているのではないでしょうか(未検証)。 (kiwofusi)
-
2.3 method_missing()
- p89 「オブジェクトがゴーストメソッドを受け取り、なんらかのロジックを適用してから、他のオブジェクトに転送する」ですが、これを具体的に言い換えると、「Flickerオブジェクトがゴーストメソッド tags_getListUser() を受け取り、method_idを書き換える処理を適用してから、XmlSimpleオブジェクトに転送する」ということでしょうか。FlickerオブジェクトではなくXmlSimpleオブジェクトが主な仕事をしてくれるから、Flickerはプロクシ(代理)のようなもの、という認識でいいかな。 (kiwofusi)
- p90 この例でDelegateClassを使うメリットが良く解らない。(mackato)
- 同感ですw (kiwofusi)
-
2.4 クイズ: バグ退治
-
2.5 もっとmethod_missing()
- p100 「@hidden_methods ||= {}」の「||=」って何? (kiwofusi)