我对红宝石很新,而且我写了一个刮刀,刮擦了汽车网站。我有一个数组,应该有汽车,但由于刮擦,似乎在数组中有一些意想不到的对象。我在我的代码中执行以下操作:
car_manufacture = car_array.map{|c| c.manufacture}
现在有时我car_array
中的物体实际上不是汽车物品,也没有制造物品。在这种情况下,我想抛出异常并记录对象。我似乎无法弄清楚如何做到这一点。
以下是我尝试过的一些事情:
car_array.map{|c| c.manufacture}.each{|c| !c.manufacture raise RuntimeError, "Error: Unknown object"}
它似乎并没有起作用。理想情况下,我希望抛出异常并记录,然后继续前进。基本上只是忽略数组中的对象。
答案 0 :(得分:1)
您可以使用partition
将这些内容拆分出来并跟踪没有信息的内容。
with, without = car_array.partition { |car| !!car.manufacture }
现在您有2个数组,with
包含manufacture
有某些内容的汽车,without
包含没有数据的数据。根据需要记录或投掷。
您现在也可以安全地获得制造商:
car_manufacture = with.map(&:manufacture)