【Ruby】ゲッター/セッターとは
ゲッター
通常、インスタンス変数はクラス内でないと参照できない。
クラス外でも参照したい時に使うのがゲッターメソッド。
class Dog def initialize(name) @name = name end def getName #「ゲッター」メソッド @name end end dog = Dog.new('チワワ') #ゲッターメソッドを定義することで、クラスの外でも@nameを取得できる p dog.getName #=> 'チワワ'
セッター
クラス外でインスタンス変数の値を変更したい時に使うのがセッターメソッド。
class Dog def initialize(name) @name = name end def setName=(name) #「セッター」メソッド @name = name end end dog = Dog.new('チワワ') #セッターメソッドを定義することで、クラスの外でも@nameを変更できる dog.setName = 'トイプードル' p dog.getName #=> 'トイプードル'
便利なアクセサメソッド
def setName=(name) @name = name end
Rubyにはわざわざこのようにゲッター/セッターを定義しなくても、1行追加するだけで可能にしてくれるメソッドがある。
それがアクセサメソッド。
メソッド名 | 役割 |
---|---|
attr_reader: | ゲッターと同じく、クラスの外で参照できるようにする |
attr_writer: | セッターっと同じく、クラスの外で変更できるようにする |
attr_accessor: | ゲッター/セッター両方の機能をもつ (クラスの外で参照・更新ができる) |
アクセサメソッドの使い方
class Dog attr_accessor :name def initialize(name) @name = name end end dog = Dog.new('チワワ') dog.name = 'トイプードル' # attr_accessorが追加されているので、そのままnameを参照できる p dog.name #=> 'トイプードル' # attr_accessorが追加されているので、そのままnameを呼び出せる
■参考にした記事