クラスのインスタンスを表示すると下のように表示されます。
person1.rb
class Person
def initialize(name, age)
@name, @age = name, age
end
end
tarou = Person.new("太郎", 18)
puts tarou
# >> #<Person:0xb86aa1e0>
しかしPersonの名前と年齢を見たいときに困ります。
下のように変更することで名前と年齢を見ることは可能です。
person2.rb
class Person
attr_reader :name, :age
def initialize(name, age)
@name, @age = name, age
end
end
tarou = Person.new("太郎", 18)
puts "#{tarou.name}は#{tarou.age}歳です。"
hanako = Person.new("花子", 16)
puts "#{hanako.name}は#{hanako.age}歳です。"
# >> 太郎は18歳です。
# >> 花子は16歳です。
この方法では新しい人物を追加するたびに.nameと.ageの部分を変更しなければなりません。
もし表示が統一されているなら、次のようにすると楽です。
person3.rb
class Person
def initialize(name, age)
@name, @age = name, age
end
def to_s
"#{@name}は#{@age}歳です。"
end
end
tarou = Person.new("太郎", 18)
hanako = Person.new("花子", 16)
puts tarou
puts hanako
# >> 太郎は18歳です。
# >> 花子は16歳です