ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

初めてのRubyを読む その42 8.6

2011-11-02 23:07:52 | Ruby
「初めてのRuby」を読むの続き

8章 オブジェクトとクラス
8.6 メソッドの探索

から




■8.6 メソッドの探索
・オブジェクトがメッセージを受け取ったとき、
 呼び出されるメソッドはどのように決定されるか
  →基本的にはオブジェクトの属するクラスによって決定

(1)最初の候補は特異メソッド
(2)次に属するクラスのインスタンスメソッド
(3)includeしたモジュールのインスタンスメソッド
(4)親クラスにさかのぼって探す
(5)クラス最上位までさかのぼって見つからなかったら
   →object#method_missingを呼び出す
     →NoMethodError例外発生

・モジュールのincludeもクラス継承の変形といえるので、
 呼び出されるべきメソッドの探索はクラスの継承階層を
 遡りながら行われるといってよい




■8.6.1 オーバーロードの不能性

・メソッドの特定はメソッド名のみによって行われる
  →引数の数や型によるオーバーロードは不可能

・組み込みのArray#[]メソッド:オーバーロードではない
  →とりあえず可変長の引数を受け取って、内部で引数の数やクラスを
   調べて処理を振り分けている

・multi gemのような外部ライブラリの助けを借りれば、手で振り分け処理
 を書かずとも実質的なオーバーロードを実現できる


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« PMBOKのお勉強 その4... | トップ | OracleのR(言語)対応と、Or... »
最新の画像もっと見る

Ruby」カテゴリの最新記事