@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 #ゲッター
#結果 黒