昨日の記事Ruby インスタンス変数を外部から操作するの続きです
attr_accessorメソッド
単純にインスタンス変数の内容を外部から読み書きする場合は、
arrt_accessorメソッドを使う
class User
#@nameを読み書きするメソッドが自動的に定義される
attr_accessor :name
def initialize(name)
@name = name
end
#nameメソッドや、name=メソッドを明示的に定義する必要がない
end
user = User.new('太郎')
#@nameを変更する
user.name = 次郎
user.name #=> "次郎"
複数指定することも可能
class User
#@nameを読み書きするメソッドが自動的に定義される
attr_accessor :name, :age
def initialize(name)
@name = name
@age = age
end
#nameメソッドや、name=メソッドを明示的に定義する必要がない
end
user = User.new('太郎', 20)
user.name #=> '太郎'
user.age #=> 20
attr_renderメソッド
インスタンス変数の内容を読み取り専用にしたい場合は、
arrt_renderメソッドを使う
class User
#読み取り用のメソッドだけを自動的に定義する
attr_render :name
def initialize(name)
@name = name
end
end
user = User.new('太郎')
#@nameを参照する
user.name #=> "太郎"
user.name = '次郎'
#=> NoMethodError
attr_writerメソッド
インスタンス変数の内容を書き込み専用にしたい場合は、
arrt_writerメソッドを使う
class User
#書き込み用のメソッドだけを自動的に定義する
attr_writer :name
def initialize(name)
@name = name
end
end
user = User.new('太郎')
#@nameは変更できる
user.name = "次郎"
#@nameの参照はできない
user.name
#=> NoMethodError
参考記事、書籍
チェリー本