在此脚本中,我接受用户输入,将其传递给对象,然后将该对象推送到数组中。然后我遍历那个数组:
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>
我无法引用位于数组中的对象的信息。我需要更改什么来接收数组中对象的信息而不是内存位置?
答案 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