【Ruby3.x】Array::reject!()メソッドの使い方
reject!メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
reject!メソッドは、レシーバーである配列の要素を、渡されたブロックの評価結果に基づいて破壊的に削除するメソッドです。このメソッドは、配列の各要素に対して順番にブロックを実行し、そのブロックの評価結果が真(nilやfalse以外の値)であった要素を、元の配列から直接取り除きます。メソッド名の末尾にある「!」は、この操作が元の配列の内容を直接変更する「破壊的」なものであることを示しており、実行後は元の配列自体が更新されます。
例えば、数値の配列から偶数だけを削除したい場合や、文字列の配列から特定の条件を満たす要素を除去したい場合などに利用できます。破壊的なメソッドであるため、元の配列を保持する必要がある場合は、このメソッドの使用は避けるべきです。その場合は、元の配列を変更せずに条件に合わない要素を取り除いた新しい配列を返す、非破壊的なArray#rejectメソッドを使用します。
reject!メソッドの戻り値は、もし配列から一つでも要素が削除された場合は、変更後の配列自身を返します。しかし、ブロックの条件に合致する要素が一つもなく、配列が全く変更されなかった場合は、nilを返します。このnilが返される挙動は、rejectメソッドが常に配列を返す点とは異なるため、特に注意が必要です。元の配列から特定の条件を満たす要素を直接かつ永続的に除去したい場合に、このメソッドは非常に強力で効率的な選択肢となります。
構文(syntax)
1array.reject! { |element| condition_to_reject }
引数(parameters)
引数なし
引数はありません
戻り値(return)
Array | nil | Enumerator
条件に合致しない要素を削除した配列、またはnilを返します。条件に合致する要素が一つもなかった場合はnilを返します。