Что такое элегантный способ заменить элемент массива на основе критериев соответствия? - PullRequest
3 голосов
/ 15 сентября 2010

Я использую следующую логику для обновления элемента списка на основе критериев.

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

В идеале я бы предпочел эти подходы:

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

ИЛИ

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

Есть ли лучший способ?

Ответы [ 2 ]

5 голосов
/ 15 сентября 2010

Начиная с 1.8.7, Array # index принимает блок.Так что ваш последний пример должен нормально работать с небольшим изменением.

idx = array.index { |o| condition }
array[idx] = obj
5 голосов
/ 15 сентября 2010
array.map { |o| if condition(o) then obj else o }

может быть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...