foo是一个对象数组,bar是该对象的一个属性。
(rdb:1) foo.bar.map{|v| bar.v }
["a", "b", "c", "d", "e", "f"]
(rdb:1) foo.bar.each{|v| p bar.v }
[massive outpouring of object attributes]
答案 0 :(得分:6)
因为each
的结果被定义为被迭代的Enumerable对象。
如果你想在irb中使用each
而不是淹没输出,那么:
foo.bar.each{|v| p bar.v }; nil
答案 1 :(得分:1)
#each
将返回其接收器,然后irb将决定帮助打印它,因为irb is a REPL.
您可以在表达式的末尾添加.any?
:
(rdb:1) foo.bar.each{|v| p bar.v }.any?
# output from only the #p call
=> true
答案 2 :(得分:0)
我认为可以告诉IRB不要显示返回值。这就解决了你的问题,而不必将; nil
放在每一行的末尾。
或者,您可以修改inspect
的{{1}}方法,使其更简洁。
bars