有没有更简单的方法?

时间:2011-01-02 07:37:56

标签: ruby

class Store
  def check_inventory
    @inventory ||= []
    @inventory.each { ... }
  end
end

带有实例变量的行可以变成一行吗?

2 个答案:

答案 0 :(得分:12)

是!! Ruby中总有一个很酷的黑客!


class Store
  def check_inventory
    @inventory.to_a.each { ... }
  end
end

这是有效的原因是Cool Ruby Feature 9,123:正如NilClass实现了一个返回#to_a的{​​{1}}方法!那太棒了?!

[]

答案 1 :(得分:4)

DigitalRoss's answer 几乎相同,但永远不会更改@inventory;您的代码将确保@inventory始终是一个数组。如果您需要这种行为,您可以直接组合这两行:

class Store
  def check_inventory
    (@inventory ||= []).each { ... }
  end
end