by shigemk2

当面は技術的なことしか書かない

selfについてごにょごにょ

メソッド実行中は常に自分自身(メソッドが呼び出されたインスタンス)が 誰であるかという情報が保存されており、selfでその情報を取ることができる。

# -*- coding: utf-8 -*-
class Hoge
  def get_self
    return self
  end

  def hoge
    # selfはあってもなくてもどっちでもいい
    fuga
  end

  def fuga
    puts 'fuga'
  end
end

hoge = Hoge.new
puts hoge # #<Hoge:0x10624bda8>
puts hoge.get_self # #<Hoge:0x10624bda8>
puts hoge == hoge.get_self # true
puts hoge === hoge.get_self # true
hoge.hoge # fuga

hogeとhoge.get_selfが同一のオブジェクトであることが確認できる

第1章 Ruby言語ミニマム