【Ruby3.x】Set::filter!()メソッドの使い方
filter!メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
filter!メソッドは、Setオブジェクトから特定の条件を満たす要素だけを残し、それ以外の要素を削除するメソッドです。このメソッドは、RubyのSetクラスのインスタンスに対して呼び出され、ブロックを受け取ります。Setの各要素は一つずつブロックに渡され、そのブロックの評価結果に基づいて要素がSetに残るか削除されるかが決定されます。
具体的には、ブロックが真(true)と評価された要素は元のSetに残されますが、ブロックが偽(false)と評価された要素はSetから削除されます。メソッド名の末尾に「!」が付いていることからもわかるように、この操作は破壊的であり、メソッドを呼び出した元のSetオブジェクト自身が変更されます。
もしSetの内容が実際に変更された場合は、変更後のSetオブジェクト自身が戻り値として返されます。しかし、ブロックの評価の結果、どの要素も削除されず、Setの内容に一切変更がなかった場合は、nilが戻り値として返されます。これにより、Setが変更されたかどうかを容易に判断できます。このメソッドは、重複しない要素の集合であるSetにおいて、特定の条件で要素を効率的に絞り込みたい場合に非常に役立ちます。
構文(syntax)
1require 'set' 2 3my_set = Set[1, 2, 3, 4, 5] 4my_set.filter! { |element| element > 2 }
引数(parameters)
引数なし
引数はありません
戻り値(return)
Set, nil, Enumerator
条件に合致する要素が削除されたSetオブジェクト、または何も削除されなかった場合はnil、ブロックが渡されなかった場合はEnumeratorを返します。