#まとめようと思ったきっかけ
普段しれっとputsとかprintとかとか使ってるけど、これって何者?と思ったので調べてみると、カーネルモジュールに含まれているメソッドらしい。「Kernelモジュール?」となったので調べてみた。
#Kernelモジュール
全てのクラスから参照できるメソッドを定義しているモジュール。 Object クラスはこのモジュールをインクルードしています。
Object クラスのメソッドは実際にはこのモジュールで定義されています。これはトップレベルでのメソッドの再定義に対応するためです。
まず、Objectクラスという全てのスーパークラスがあって、ここで定義されたメソッドは全てのオブジェクトに使える。
そしてKarnelモジュールはこのObjectクラスに含まれているので、結果、どこでもメソッドが使えるということ。
(ちなみにモジュールとは、クラスのようにインスタンス化ができないが、定数やメソッドを定義できる機能。)
こんな感じ。
#この部分がトップレベル(クラスやモジュールの外側)
def say
puts "hello"
end
#この部分がトップレベル
#Humanクラスは親クラスのObjectを継承しているのでsayメソッドが使える。
class Human
def talk
say
end
end
human = Human.new()
human.talk
#=>hello
#最後に
自分なりに調べたのですが、もし間違いがあったらご指摘いただけると幸いです。
#参考文献
オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル
https://docs.ruby-lang.org/ja/latest/class/Kernel.html
Rubyにおけるトップレベル
https://www.javadrive.jp/ruby/method/index1.html
Ruby のトップレベルメソッドって結局なんなの
https://qiita.com/pink_bangbi/items/c08ec7b32fc6dd20baad