LoginSignup
3
0

More than 3 years have passed since last update.

RubyのKernelモジュールについて

Posted at

まとめようと思ったきっかけ

普段しれっとputsとかprintとかとか使ってるけど、これって何者?と思ったので調べてみると、カーネルモジュールに含まれているメソッドらしい。「Kernelモジュール?」となったので調べてみた。

Kernelモジュール

全てのクラスから参照できるメソッドを定義しているモジュール。 Object クラスはこのモジュールをインクルードしています。
Object クラスのメソッドは実際にはこのモジュールで定義されています。これはトップレベルでのメソッドの再定義に対応するためです。

まず、Objectクラスという全てのスーパークラスがあって、ここで定義されたメソッドは全てのオブジェクトに使える。
そしてKarnelモジュールはこのObjectクラスに含まれているので、結果、どこでもメソッドが使えるということ。
(ちなみにモジュールとは、クラスのようにインスタンス化ができないが、定数やメソッドを定義できる機能。)

こんな感じ。

talk.rb
#この部分がトップレベル(クラスやモジュールの外側)
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

3
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0