如何更改对象的显示方式?

时间:2015-12-15 20:37:21

标签: ruby inspect

在此脚本中,我接受用户输入,将其传递给对象,然后将该对象推送到数组中。然后我遍历那个数组:

objects_array = Array.new

class Object
  def initialize(fname)
    @first_name = fname
  end
end

fname = gets.chomp
user_first = Object.new(fname)
objects_array <<  user_first
objects_array.each {|x| print x}

我从终端输入了"Tyler",我期待的结果是:

Tyler

但我没有检索到这些结果。而不是对象字符串,我收到内存位置:

#<Object:0x26f00b8>

我无法引用位于数组中的对象的信息。我需要更改什么来接收数组中对象的信息而不是内存位置?

1 个答案:

答案 0 :(得分:8)

如果没有合适的to_s方法,Ruby无法以很好的方式打印Object(以字符串形式出现)。如果没有to_s方法,则Ruby的回退是一个内部方法,它只接受类名和对象id。

您需要在模型中添加to_s方法:

class Object
  def initialize(fname)
    @first_name = fname
  end 

  def to_s
    @first_name
  end
end