Ruby delete_if块

时间:2011-02-04 02:48:03

标签: arrays ruby block

这是使用Ruby 1.9。

我有一个delete_if块:

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

其中logItem.namelogItem的名称,而name是我正在寻找的logItem的名称。这样可以正常工作,除非它使用指定的logItem删除每个name。有没有办法找到具有相等name的第一个项目,只删除它?因此,如果有两个logItem具有相同的name,我只想删除其中一个。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我使用Array#index查找具有匹配名称的第一个项目的索引,然后Array#delete_at删除它。

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