如何在2D数组中制作ruby打印所有合适的括号

时间:2013-10-07 02:45:39

标签: ruby

我看到各种关于摆脱括号的建议,但是当我开始我的开始红宝石课程时,我想看看我是否正确地创建了一个二维数组。

现在我只限于

puts my_2D_array[0]
puts my_2D_array[1] #etc

但我希望看到

[ [6,6,3] , [7,4,7] , [4,7,4] ]

而不是我得到的,这是

663747474

诀窍是什么?我肯定在处理数组 - 而不是字符串......

1 个答案:

答案 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

并获得相同的三行输出。 (您可以使用putsinspect代替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"
        ]
    ]
}