LoginSignup
2
2

More than 5 years have passed since last update.

クラスのインスタンスを表示するときに見やすくする

Last updated at Posted at 2014-01-13

クラスのインスタンスを表示すると下のように表示されます。

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歳です
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2