塩焼きブログ

塩焼きに関しての研究内容を公開しています

Rubyのselfでインスタンスメソッドから別のインスタンスメソッドを呼ぶ

Rubyのselfという変数を使えば現在のレシーバ自身を参照できるので、インスタンスメソッドから別のインスタンスメソッドを作成できる。

class Message

  def initialize(name)
    @name = name
  end

  def hello_puts
    puts self.hello_message
  end

  def hello_message
    "Hello #{@name}"
  end

end

msg = Message.new("Jane")
msg.hello_puts
# Hello Jane

より複雑化したプログラムでは、ひとつひとつの機能をインスタンスメソッド毎に分け、更に別インスタンスからselfを使ってそれぞれの機能が振り分けられたインスタンスメソッドをまとめて読み込むといった処理を行う事がある。 例えば、Ruby on Railsのモデルでカラムデータへはselfを使ってアクセスする。