1.ゲッターとは
ゲッターとは,インスタンス変数をクラス内から参照するメソッドのことをいう。
以下のようなコードにおいて、本来Rubyではインスタンス変数の値はクラス内からでしか取得することはできない。
class Movie
def initialize(name)
@name = name
end
end
obj1 = Movie.new('Forrest Gump')
p obj1.name #=>undefined method `name' for #<Movie:0x00007fd4558526f0 @name="Forrest Gump">
そこで、それを可能にするため、クラス内にインスタンス変数を参照する専用のメソッド「ゲッター」を定義する。
class Movie
def initialize(name)
@name = name
end
def getName #「ゲッター」
@name
end
end
obj1 = Movie.new('Forrest Gump')
p obj1.getName #=> 'Forrest Gump'
2.セッターとは
セッターとは、インスタンス変数をクラス内で更新するメソッドのことをいう。
以下のようなコードにおいて、セッターにおいてもインスタンス変数の更新もクラス内でしかでない。
class Movie
def initialize(name)
@name = name
end
end
obj1 = Movie.new('Forrest Gump')
p obj1.name = 'Fight Club' #=>undefined method `name=' for #<Movie:0x00007ffd4a83b400 @name="Forrest Gump"> (NoMethodError)
そこで、それを可能にするため、クラス内にインスタンス変数の内容を更新する専用のメソッド「セッター」を定義する。
class Movie
def initialize(name)
@name = name
end
def changeName=(name) #「セッター」
@name = name
end
end
obj1 = Movie.new('Forrest Gump')
obj1.changeName = 'Fight Club'
p obj1.getName #=> 'Fight Club
この時、セッターの定義において、
メソッド名の右側に「=()」が必要となる。
以上