我可以在Ruby中控制自定义对象的数组吗?

Gle*_*enn 0 ruby arrays

我有一个名为Thing的自定义类和一个Thing对象数组,如下所示:

class Thing
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def to_s
    @name
  end
end

a = []
a << Thing.new("Fred")
a << Thing.new("George")
a << Thing.new("Steve")
a
Run Code Online (Sandbox Code Playgroud)

当我在irb中查看数组时,我希望它看起来像这样:

[Fred, George, Steve]
Run Code Online (Sandbox Code Playgroud)

而不是这个(对象信息):[#,#,#]

换句话说,当我用irb查看数组时,我希望能够看到数组中每个元素的to_s值.有没有办法做到这一点?

Ada*_*han 5

您可能希望覆盖#inspect以获取对象的人类可读版本:

class Thing
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def inspect
    @name
  end
end

a = []
a << Thing.new("Fred")
a << Thing.new("George")
a << Thing.new("Steve")
a

=> [Fred, George, Steve]
Run Code Online (Sandbox Code Playgroud)