如何在ruby中打印多维数组?
在ruby中打印多维数组的首选方法是什么?
例如,假设我有这个2D数组:
x = [ [1, 2, 3], [4, 5, 6]]
我尝试打印它:
>> print x 123456
什么不起作用:
>> puts x 1 2 3 4 5 6
如果你只是在寻找易于阅读的调试输出,“p”很有用(它在数组上调用inspect())
px [[1, 2, 3], [4, 5, 6]]
或者:
px
-要么-
require 'pp' . . . pp x
如果您想要获取多维数组并将其呈现为二维图形的可视化表示,则可以很好地工作:
x.each do |r| puts r.each { |p| p }.join(" ") end
然后你在终端中以这样的结尾:
1 2 3 4 5 6 7 8 9
Ruby附带的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 > px [[1, 2, 3], [4, 5, 6]] => [[1, 2, 3], [4, 5, 6]]
执行此操作的“基本”方式以及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
会产生稍微好一点的输出。
迭代“封闭”数组中的每个条目。 该数组中的每个条目都是另一个数组,因此也要对其进行迭代。 打印。 或者,使用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