什么是在Ruby中打印多维数组的首选方法?
例如,假设我有这个二维数组:
同时,以下也是不可行的:
例如,假设我有这个二维数组:
x = [ [1, 2, 3], [4, 5, 6]]
我尝试打印它:
>> print x
123456
同时,以下也是不可行的:
>> puts x
1
2
3
4
5
6
x = [ [1, 2, 3], [4, 5, 6]]
我尝试打印它:
>> print x
123456
>> puts x
1
2
3
4
5
6
p x
[[1, 2, 3], [4, 5, 6]]
两种选择:
p x
-或者-
require 'pp'
. . .
pp x
如果您想将多维数组作为二维图形的可视化呈现,以下方法非常适用:
x.each do |r|
puts r.each { |p| p }.join(" ")
end
1 2 3
4 5 6
7 8 9
.map { |p| p }
” 的作用是什么?! - muichkinePrettyPrint是Ruby自带的工具,可以帮助您完成这个任务:
require 'pp'
x = [ [1, 2, 3], [4, 5, 6]]
pp x
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]]
遍历“封闭”数组中的每个条目。该数组中的每个条目都是另一个数组,因此也要对其进行迭代。打印输出或使用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
实现这一点的“基本”方法,以及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
产生的输出略微更加美观。