Har*_*tty 3 ruby ruby-on-rails
我使用以下逻辑来根据条件更新列表项.
def update_orders_list(order)
@orders.delete_if{|o| o.id == order.id}
@orders << order
end
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会更喜欢这些方法:
array.find_and_replace(obj) { |o| conditon }
Run Code Online (Sandbox Code Playgroud)
要么
idx = array.find_index_of { |o| condition }
array[idx] = obj
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
array.map { |o| if condition(o) then obj else o }
Run Code Online (Sandbox Code Playgroud)
也许?
从1.8.7开始,Array#index接受一个块.所以你的最后一个例子应该可以很好地进行一些小调整.
idx = array.index { |o| condition }
array[idx] = obj
Run Code Online (Sandbox Code Playgroud)