2011-02-04 20 views
1

これはRuby 1.9を使用しています。Ruby delete_ifブロック

私はdelete_ifブロックがあります。

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

logItem.namelogItemの名前で、nameは私が探しているlogItemの名前です。これは、指定したnameでそれぞれlogItemを削除する点を除いて、問題なく機能します。 nameの最初のアイテムを見つけて削除する方法はありますか?したがって、同じnameを持つ2つのlogItemがある場合、そのうちの1つだけを削除したいだけです。何か案は?

+0

ハッシュではなく配列について質問していますか? –

+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) 
+0

素晴らしい!ありがとう、完璧に働いた。 –

関連する問題