LoginSignup
40
28

More than 5 years have passed since last update.

インスタンス変数の値を取得するメソッド(ゲッター)

Last updated at Posted at 2015-07-29

@nameなどのインスタンス変数の値はクラス内からしか取得出来ません。
クラス外からインスタンス変数の値を取得するには、クラス内にdef nameのように定義する
このインスタンス変数の値を取得するためのメソッドを「ゲッター」と呼びます。

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

  def name
    @name 
  end
end

my_car = Car.new("プリウス", "白")     
puts my_car.name

attr_readerメソッド(アクセスメソッド)

「ゲッター」(インスタンス変数の値を取得するためのメソッド)を簡単に定義する方法。

class Car
  attr_reader :name, :color
  def initialize(name, color)
    @name = name
    @color = color
  end
end

my_car = Car.new("プリウス", "白")
puts my_car.name  

インスタンス変数の値を変更するメソッド(セッター)

@colorなどのインスタンス変数の値の変更はクラス内でしか出来ません。
外部からインスタンス変数の値を変更する場合

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

  #外部からインスタンス変数の値を変更する場合
  def color=(value)
    @color = value
  end
end

my_car = Car.new("プリウス", "白")
my_car.color = ("赤")

attr_writer(アクセスメソッド)

attr_writer :colorと定義すると、「color = ""」と定義できます。

class Car
  attr_writer :name, :color
end

my_car = Car.new("プリウス", "白")
puts my_car.color
#結果 白

my_car.color = "赤"  
puts my_car.color
#結果  赤

attr_readerrとattr_writerを同時に定義する。

attr_accessorを用いるとゲッターとセッターの両方を一度に定義することが出来ます。

class Car
  attr_accessor :name, :color
end

my_car = Car.new("プリウス", "白")
puts my_car.color #ゲッター
#結果 白
my_car.color = "黒" #セッター
puts my_car.color #ゲッター
#結果 黒
40
28
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
40
28