【发布时间】:2017-11-02 23:18:16
【问题描述】:
我有一个名为 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
当我查看 irb 中的数组时,我希望它看起来像这样:
[Fred, George, Steve]
而不是这个(对象信息): [#, #, #]
换句话说,当我用 irb 查看数组时,我希望能够看到数组中每个元素的 to_s 值。有没有办法做到这一点?
【问题讨论】:
-
这个
a.map{|o|o.name} #=> ["Fred", "George", "Steve"]或a.map(&:name) #=> ["Fred", "George", "Steve"]怎么样? -
如果你想要一个类的所有实例,你可以写
ObjectSpace.each_object(Thing).map(&:name) #=> ["Fred", "George", "Steve"]。有关详细信息,请参阅here。