いままであまり気にする機会がなかったので、深く考えたことなかったのだけど、Rubyのメソッド解決順序はどのようになっているかということについて、疑問に思いいろいろ試してみた。ソースを読めばいいんだろうけど、いろいろ試しながら実装していけば理解できるだろうと思い立ち、なぜかJavaScriptで実装してみた。 メソッド解決順序(MRO) メソッド解決順序とは、hoge.fugaのようにメソッド呼び出しをしたときに どのクラスから順番にmethod名を探すかという順序のこと。 これらに影響を与えそうな要素は以下 継承 モジュールのinclude モジュールのprepend 特異クラス 特異メソッド method_missing こんなものだろうか。 クラスオブジェクトに対して、ancestorsメソッドを呼べば、 どのような順序でmethodの探索がなされるかがArrayとして帰ってくる。 c