基于匹配条件替换数组元素的优雅方法是什么?

时间:2010-09-15 17:39:20

标签: ruby-on-rails ruby

我使用以下逻辑根据条件更新列表项。

def update_orders_list(order)
  @orders.delete_if{|o| o.id == order.id}
  @orders << order
end

理想情况下,我更喜欢这些方法:

array.find_and_replace(obj) { |o| conditon }

OR

idx = array.find_index_of { |o| condition }
array[idx] = obj

有更好的方法吗?

2 个答案:

答案 0 :(得分:5)

array.map { |o| if condition(o) then obj else o }

可能?

答案 1 :(得分:5)

从1.8.7开始,Array#index接受一个阻止。所以你的最后一个例子应该可以很好地进行一些小调整。

idx = array.index { |o| condition }
array[idx] = obj
相关问题