在ruby中打印多维数组的首选方法是什么?
例如,假设我有这个2D数组:
x = [ [1, 2, 3], [4, 5, 6]]
我尝试打印它:
>> print x
123456
还有什么行不通:
>> puts x
1
2
3
4
5
6
答案 0 :(得分:12)
如果您只是在寻找易于阅读的调试输出,“p”很有用(它会调用数组上的inspect())
p x
[[1, 2, 3], [4, 5, 6]]
答案 1 :(得分:7)
或者:
p x
-OR -
require 'pp'
. . .
pp x
答案 2 :(得分:6)
如果你想拍摄多维数组并将其作为二维图形的直观表示,这很有效:
x.each do |r|
puts r.each { |p| p }.join(" ")
end
然后你在终端中以这样的结尾结束:
1 2 3
4 5 6
7 8 9
答案 3 :(得分:4)
PrettyPrint将为您完成此任务:
require 'pp'
x = [ [1, 2, 3], [4, 5, 6]]
pp x
然而,Ruby 1.9.2中的输出(如果可能,您应该尝试使用)会自动执行此操作:
ruby-1.9.2-p290 :001 > x = [ [1, 2, 3], [4, 5, 6]]
=> [[1, 2, 3], [4, 5, 6]]
ruby-1.9.2-p290 :002 > p x
[[1, 2, 3], [4, 5, 6]]
=> [[1, 2, 3], [4, 5, 6]]
答案 4 :(得分:2)
迭代“封闭”数组中的每个条目。该数组中的每个条目都是另一个数组,因此也要迭代它。打印。或者,使用join
。
arr = [[1, 2, 3], [4, 5, 6]]
arr.each do |inner|
inner.each do |n|
print n # Or "#{n} " if you want spaces.
end
puts
end
arr.each do |inner|
puts inner.join(" ") # Or empty string if you don't want spaces.
end
答案 5 :(得分:2)
执行此操作的“基本”方式以及IRB执行此操作的方式是打印#inspect
的输出:
ruby-1.9.2-p290 :001 > x = [ [1, 2, 3], [4, 5, 6]]
=> [[1, 2, 3], [4, 5, 6]]
ruby-1.9.2-p290 :002 > x.inspect
=> "[[1, 2, 3], [4, 5, 6]]"
然而, pp
会产生更好的输出。