展示我的互动式会议:
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"]
答案 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: ...>
这可能不是想要的。