我看到各种关于摆脱括号的建议,但是当我开始我的开始红宝石课程时,我想看看我是否正确地创建了一个二维数组。
现在我只限于
puts my_2D_array[0]
puts my_2D_array[1] #etc
但我希望看到
[ [6,6,3] , [7,4,7] , [4,7,4] ]
而不是我得到的,这是
663747474
诀窍是什么?我肯定在处理数组 - 而不是字符串......
答案 0 :(得分:2)
p array
会为您提供您要求的输出:
[[6,6,3],[7,4,7],[4,7,4]]
想要将每一行放在一个单独的行上吗?然后使用:
array.each {|e| p e}
得到:
[6,6,3]
[7,4,7]
[4,7,4]
您可以向Array类添加一个方法:
class Array
def ppa # 'pretty-print array'
self.each {|e| p e} # or just 'each {|e| p e}'
end
end
wold允许你写
array.ppa
并获得相同的三行输出。 (您可以使用puts
和inspect
代替p
。)您认为可能经常使用此功能吗?然后将此代码放在一个名为'array_print.rb'的文件中,并将'require array_print'
添加到'.rb'代码文件的开头。每次运行程序时,都会执行array_print.rb
中的语句,使Array
方法ppr
可供您使用。
让我们不止于此!假设您还希望为三维数组,散列,数组散列等提供格式良好的输出。您可以详细说明我上面描述的方法,但为什么要重新发明轮子?有几种优秀的Ruby宝石可以为您处理所有这些。一个流行的是“令人敬畏的印刷品”。安装此gem之后,您只需在代码文件中添加require 'awesome_print'
即可。然后,您可以使用其ap
方法格式化输出。 (有关如何安装宝石的说明,请参阅RubyGems。这很简单。)
为了体验真棒的打印效果,假设您想要显示此哈希值而不是上面的数组:
hash = {"cat"=>["mice", "birds"], "dog"=>["master",["kids", "moms"]]}
执行ap hash
,你会得到这个:
{
"cat" => [
[0] "mice",
[1] "birds"
],
"dog" => [
[0] "master",
[1] [
[0] "kids",
[1] "moms"
]
]
}