🦏 インスタンス変数とnewとinitialize
作成日: 2022/01/13
2

Ruby on Railsのインスタンス変数という言葉を調べたら芋づる式に色々理解できた。
インスタンス変数というのは@で始まり、class内で共通して使える変数。

class Car
  def setName(str)
    @name = str
  end

  def dispName()
    print(@name, "\n")
  end
end

car1 = Car.new()
car1.setName("TVR Griffith")

car2 = Car.new()
car2.setName("MG Metro 6R4")

car1.dispName
car2.dispName

// 実行結果
// TVR Griffith
// MG Metro 6R4

car1、car2、それぞれのオブジェクトに対して値を格納した場合、@nameは上書きされることなく異なる値を格納することができる。

newinitializeを使えばさらに効率よく書ける。

class Car
  def initialize(str)
    @name = str
  end

  def dispName()
    print(@name, "\n")
  end
end
Car.new("TVR Griffith").dispName
Car.new("MG Metro 6R4").dispName

// 実行結果
// TVR Griffith
// MG Metro 6R4

さらに複数の引数を渡すことも出来るという。

class Car
  def initialize(name, engine)
    @name = name
    @engine = engine
  end

  def dispSentence()
    print(@name + "は" + @engine + "エンジン搭載です。\n")
  end
end

Car.new("TVR Griffith", "V8").dispSentence
Car.new("MG Metro 6R4", "V6").dispSentence

// 実行結果
// TVR GriffithはV8エンジン搭載です。
// MG Metro 6R4はV6エンジン搭載です。

はい、そうです。私は英国車が好き。

参考資料:
インスタンス変数 - クラスの概念 - Ruby入門
【Ruby】newメソッドとinitializeメソッドの使い方【クラスとインスタンス】


JavaScriptとSassと英語が好き。