2014-04-30 [長年日記]
_ Rubyでクラスに実装されているメソッド(親クラス分を除く)を調べる
あるクラスに実装されているメソッド(親クラス分を除く)を調べるにはArrayの場合は [].methods(false)
かなと思ったけど結果が思ったのと違う。
@hsbt さんに聞いたら Array.instance_methods(false)
でインスタンスメソッドが見れると教えてくれた。便利。
クラスメソッドはpublic_methodsを使えばいい。 Array.public_methods(false)
同じことをRubyのソースコードから見るには、Array であれば array.c の最後のところに rb_define_method でメソッドを定義している部分がずらっと並んでいるのでそこを見ればいい。こちらはRubyConf台湾の鳥井さんの発表で学びました。
追記(2014.5.1):@machu さんが違いを調べてくれた。なるほどー!