##セッターとゲッターの役割
セッター
クラス外からインスタンス変数の値を変更できるインスタンスメソッド
ゲッター
クラス外からインスタンス変数の値を出力できるインスタンスメソッド
使用例
class People
# セッター('name='までがメソッド名)
def name=(name)
@name = name # 2. メソッドの引数を@nameに入れる
end
# ゲッター
def name
@name # 3. @nameを出力する
end
# ゲッターの応用
def introduction
puts "私の名前は#{@name}です。" # 1. メソッドを呼ぶ際に@nameを任意に変更したい
end
end
# 1〜3の過程で、セッターメソッドに渡した引数がインスタンス変数に入るようになった。
user = People.new
user.name=("太郎") # セッターを使い、"太郎"が@nameに入った
puts user.name # ゲッターを呼ぶと@nameが出力される
#=> 太郎
user.introduction
#=> 私の名前は太郎です。
user.name = "花子" # セッターで@nameの値を"花子"に設定した
user.introduction
#=> 私の名前は花子です。
まとめ
インスタンス変数の「メソッド間で同じ値を共有する」という性質と
インスタンスメソッドの「**クラス外でも使用できる」**という性質を組み合わせることで
「クラス外でもインスタンス変数の値を変更・出力できる」という使い方をしたものが、
ゲッターとセッターである。
##簡単に使う
セッターを定義 attr_writer :メソッド名
ゲッターを定義 attr_reader :メソッド名
ゲッターとセッターをまとめて定義 attr_accessor :メソッド名