【Ruby】トップレベルとは
はじめに
Rubyのトップレベルについて、私自身あまり理解できていなかったので、学んだことをまとめたいと思います。
トップレベルとは
トップレベルとは、クラス構文やモジュール構文に囲まれていない一番外側の部分のことを言います。
また、トップレベルでselfを表すオブジェクトはmainです。mainは、トップレベルからselfで参照できます。 Ruby リファレンスマニュアル
irbで確認してみる
トップレベルはクラス構文やモジュール構文に囲まれていない一番外側と考えると、irbを起動した直後にいる場所もトップレベルにあたります。
#irb self #=> main self.class #=> Object
上記のように、 irb起動時にselfで参照すると、mainが返ってきます。また、self.class
でObjectが返ってくることから、mainはObjectクラスのインスタンスであることが分かります。
トップレベルでメソッドを定義する
トップレベルで定義したメソッドは、Objectクラスのインスタンスメソッドとして定義されます。
#irb def top_method; "top_method"; end Object.instance_methods.grep(/top_method/) #=> [:top_method]
Rubyはすべてがオブジェクトであり、ClassクラスやModuleクラスも大半はObjectクラスを継承していることから、トップレベルで定義したメソッドは、どこからでも呼び出すことができるようになっています。