LoginSignup
5
0

【Ruby Gold3.1詰まったシリーズ】selfの参照先

Last updated at Posted at 2023-12-06

はじめに

今回はselfに関する内容です。selfの参照先はselfが呼び出される場所で異なるらしいのでかんたんにまとめてみます。

確認してみた

環境はruby2.5.3です。
まず、selfを呼出すメソッドが定義されたClsを作成し実行する。

class Cls
  p self
  def hoge
    self
  end
end

すると、

Cls

が表示され、Cls内のselfはClsクラスを参照している。
次に、Aインスタンスを作成し、AとA.hoge(=self)が同じかどうか確認すると、

irb(main):007:0> A = Cls.new
=> #<Cls:0x0000563638a63190>
irb(main):008:0> A.equal?(A.hoge)
=> true

trueとなり、メソッド内のselfはレシーバ(Aインスタンス)を参照していることが分かった。

おわりに

確認した結果、selfの参照先はselfがクラス内に定義された時はクラス自身を、メソッド内に定義された時はレシーバを参照することが分かった。もし誤っていたらご指摘いただけると助かります!

参考

5
0
0

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
5
0