インスタンス変数を読み出したり書き込んだりするメソッドを暗黙的に定義してくれる方法がRubyでは用意されている。下記のようにattr_accessor
メソッド、attr_reader
メソッド、attr_writer
メソッドを用いる。
下記のように各アクセスレベルに応じて、アクセスメソッドの定義を省略して、インスタンス変数にアクセスできる。
class User attr_accessor :name # 読み書きするメソッドを暗黙的に定義 attr_reader :age # 読み取り専用のメソッドを暗黙的に定義 attr_writer :gender # 書き込み専用メソッドを暗黙的に定義 def initialize(name, age, gender) @name = name @age = age @gender = gender end end user = User.new('Alice', 30, 'female') puts user.name user.name = 'Elice' puts user.name puts user.age # user.age = 20 #読み取り専用なので、書き込みメソッドは自分で定義しないと、『メソッドがない』というエラーになる puts user.age # puts user.gender #書き込み専用なので、読み取りメソッドは自分で定義しないと、『メソッドがない』というエラーになる user.gender = 'man' # puts user.gender #書き込み専用なので、読み取りメソッドは自分で定義しないと、『メソッドがない』というエラーになる