Webエンジニアへの転職を目指して、現在Ruby、Railsを学習中。

【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クラスを継承していることから、トップレベルで定義したメソッドは、どこからでも呼び出すことができるようになっています。

参考ページ

Ruby リファレンスマニュアル

参考文献