概要
Module#attr(name, assignable = false) -> nil
詳細
インスタンス変数読み取りのためのインスタンスメソッド name を定義する。
つまり
class Person attr :name def initialize(name) @name = name end end
は
class Person def initialize(name) @name = name end def name @name end end
と同じです。
assignable を true にした場合、書き込みも可能。
ただし、-w オプション付きで実行した場合 assignable を使用すると警告が出ます。
サンプルコード
require 'pp' class Person attr :name attr :age def initialize(name, age) @name, @age = name, age end end person = Person.new('tanaka', 33) pp person class PersonWritable attr :name, true attr :age, true def initialize(name, age) @name, @age = name, age end end person = PersonWritable.new('tanaka', 33) person.age = 55 pp person
出力
$ ruby -w module_attr.rb #<Person:0x0000060038c268 @age=33, @name="tanaka"> module_attr.rb:15: warning: optional boolean argument is obsoleted module_attr.rb:16: warning: optional boolean argument is obsoleted #<PersonWritable:0x0000060038ab98 @age=55, @name="tanaka">