我使用以下逻辑根据条件更新列表项。
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
有更好的方法吗?
答案 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