打印阵列阵列,每个阵列都在单独的行上

时间:2016-06-09 18:03:24

标签: ruby

展示我的互动式会议:

2.3.0 :005 > ('a'..'c').to_a.combination(2).to_a
=> [["a", "b"], ["a", "c"], ["b", "c"]]

2.3.0 :006 > ('a'..'c').to_a.combination(2).to_a.each do |arr|
2.3.0 :007 >     puts arr
2.3.0 :008?>   end
a
b
a
c
b
c
=> [["a", "b"], ["a", "c"], ["b", "c"]]

如何让这个数组数组在单独的行上显示每个内部数组,如此......?

["a", "b"]
["a", "c"]
["b", "c"]

3 个答案:

答案 0 :(得分:3)

使用Kernel#p而不是Kernel#puts

('a'..'c').to_a.combination(2).each { |a| p a }
["a", "b"]
["a", "c"]
["b", "c"]

请注意,虽然没有块的Array#combination会返回枚举器,但您不必在each之前将其转换为数组。

答案 1 :(得分:1)

尝试

('a'..'c').to_a.combination(2).each do |arr|
   puts arr.inspect
end

答案 2 :(得分:1)

使用Ruby Kernel#pp(漂亮打印)库中的PP。 pp就像Kernel#p

require "pp"

pp ('a'..'e').to_a.combination(2).to_a
# => [["a", "b"], ["a", "c"], ["b", "c"]]

除了 pp 自动将长输出分成多行:

pp ('a'..'e').to_a.combination(2).to_a

[["a", "b"],
 ["a", "c"],
 ["a", "d"],
 ["a", "e"],
 ["b", "c"],
 ["b", "d"],
 ["b", "e"],
 ["c", "d"],
 ["c", "e"],
 ["d", "e"]]

由于Array#组合返回Enumeration,我们使用#to_a将其转换为数组。没有#to_a, pp 只显示:

pp ('a'..'e').to_a.combination(2)
# => #<Enumerator: ...>

这可能不是想要的。