如何在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