【Ruby3.x】Hash::filter!()メソッドの使い方
filter!メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
filter!メソッドは、Hashオブジェクトの内容を特定の条件に基づいてフィルタリングし、その結果で元のハッシュ自身を更新するメソッドです。メソッド名の末尾にある「!」が示す通り、このメソッドは呼び出し元のHashオブジェクトを直接変更する破壊的な操作を行います。具体的には、ハッシュの各キーと値のペアに対して与えられたブロック内の条件式が評価され、真を返したペアのみがハッシュに残され、それ以外のペアは削除されます。
元のハッシュを変更せずに、フィルタリングされた新しいハッシュを作成したい場合は、非破壊的メソッドであるHash#filter(またはHash#select)を使用してください。
例えば、my_hash.filter! { |key, value| value > 10 } と記述することで、値が10より大きいペアのみをmy_hashに残すことができます。ハッシュの内容が変更された場合は変更後のHashオブジェクト自身が返され、全く変更されなかった場合はnilが返されます。このメソッドは、特定の条件を満たすデータだけをハッシュに残したい場合に非常に有用です。
構文(syntax)
1data = { apple: 100, banana: 50, cherry: 120 } 2data.filter! { |key, value| value > 100 }
引数(parameters)
引数なし
引数はありません
戻り値(return)
Hash or nil
指定された条件に一致しない要素がなくなった場合のHashオブジェクト、または条件に一致する要素が1つもなかった場合にnilを返します。