rubyのインスタンス変数

2022.07.27

インスタンス変数

@から始まる変数をつけて定義する。クラスの前メソッドで使用できる変数であるということ。

オブジェクトごとにインスタンス変数の中身は変わる。

特徴

インスタンスメソッドのどこかで定義すればクラス内で使える。(プライベートメソッドも)

class Hoge
 def initialize(number)
  @num = number
 end

 def a
  p @num
 end
end

h = Hoge.new(1)
h.a #=> 1

オブジェクトごとに持つ値が変化する。

class Hoge
 def initialize(number)
  @num = number
 end

 def a
  p @num
 end
end

h = Hoge.new(1)
h2 = Hoge.new(2)
h.a #=> 1
h2.a #=> 2

アクセサーを使ってオブジェクトからインスタンス変数値にアクセスできる。attr_readerは読み込み、attr_writerは書き込み。attr_accessorは両方。

class Hoge
 attr_accessor :num
 def initialize(number)
  @num = number
 end
end

h = Hoge.new(1)
h.num #=> 1

まとめ

インスタンス変数は@から始まる変数名をつけて定義する。クラス内のどこでも使えて、オブジェクト毎に値が変わる。