Рубиновый блок delete_if - PullRequest
       6

Рубиновый блок delete_if

1 голос
/ 04 февраля 2011

Используется Ruby 1.9.

У меня есть блок delete_if:

@logHash[date].delete_if{ | logItem | logItem.name == name }

Где logItem.name - это имя logItem, а name - это имя logItem, которое я ищу. Это прекрасно работает, за исключением того, что удаляет каждый logItem с указанным name. Есть ли способ найти первый элемент с равным name и только удалить его? Так что, если есть два logItems с одинаковым name, я хочу удалить только один из них. Есть идеи?

1 Ответ

2 голосов
/ 04 февраля 2011

Я бы использовал Array#index, чтобы найти индекс первого элемента с соответствующим именем, а затем Array#delete_at, чтобы удалить его.

index_to_delete = @logHash[date].index {|log_item| log_item.name == name}
@logHash[date].delete_at(index_to_delete)
...