【问题标题】:Throwing exception when object in array doesn't have expected property当数组中的对象没有预期的属性时抛出异常
【发布时间】:2014-10-05 23:26:48
【问题描述】:

我对 ruby​​ 还很陌生,我写了一个刮板,它可以刮掉汽车网站。我有一个数组,它应该有汽车,但由于刮擦,数组中似乎有一些意想不到的对象。我在我的代码中执行以下操作:

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"}

而且它似乎不起作用。理想情况下,我希望抛出并记录异常,然后继续前进。本质上只是忽略了数组中的对象。

【问题讨论】:

    标签: ruby arrays exception


    【解决方案1】:

    您可以使用partition 将它们分开并跟踪没有信息的部分。

    with, without = car_array.partition { |car| !!car.manufacture }
    

    现在您有 2 个数组,with 包含汽车,其中 manufacture 有东西,without 包含没有东西的汽车。记录或投掷你认为合适的。

    您现在也可以安全地获得制造商:

    car_manufacture = with.map(&:manufacture)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多