【发布时间】:2012-07-13 03:51:08
【问题描述】:
我有一个打算在 IRB 中运行的小程序。它最终输出一些看起来像数组的东西,尽管从技术上讲不是数组。 (该类继承自数组。)问题是,当我做这个类的一个实例时,例如example = Awesome.new(1,2,3),我写“puts example”,IRB的默认行为是将example的每个元素放在自己的行上。
所以不是
[1,2,3]
(这是我想要的),IRB 弹出这个。
1
2
3
有没有一种聪明的方法来覆盖这个特殊类的 puts 方法?我试过了,但没有用。
def puts
self.to_a
end
知道我做错了什么吗?
更新:所以我尝试了这个,但没有成功。
def to_s
return self
end
所以当我在 IRB 中并且我只输入“示例”时,我得到了我正在寻找的行为(即 [1, 2, 3]。所以我想我可以只返回自我,但我'显然,我还在搞砸什么。我不明白什么?
【问题讨论】:
-
您是否有理由需要覆盖
puts而不仅仅是使用p? -
你没有从 to_s 返回一个正确的字符串,为什么不直接生成你自己的字符串并返回呢?解决问题的方法也在我的帖子中;我们通常不喜欢作者在发布后更改所提出的问题,那么最好留下它并提出一个新问题。