Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Set::flatten_merge()メソッドの使い方

flatten_mergeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

flatten_mergeメソッドはSetオブジェクト(集合)内の要素を、与えられたブロックの処理に基づいて平坦化し、元の集合とマージするメソッドです。

このメソッドは、呼び出し元のSetオブジェクトに含まれる各要素に対して、ユーザーが定義したブロックを一つずつ実行します。ブロックの戻り値によって、要素の扱いが変わる点が特徴です。

具体的には、ブロックがnilまたはfalseを返した場合、対象となる要素はそのままの形で現在の集合に保持されます。一方で、ブロックがnilfalse以外の値を返した場合は、その戻り値に対してto_aメソッドで配列に変換し、さらにflattenメソッドで平坦化する処理が行われます。その後、この平坦化された要素群が、元の要素の代わりに現在の集合に追加されます。

これにより、Setオブジェクト内の特定の要素を、ブロックのロジックに基づいて別の複数の要素に展開したり、あるいは別の集合や配列の内容を現在の集合に統合したりすることが可能になります。結果として、元のSetオブジェクトが変更された新しいSetオブジェクトが生成され、ネストされたデータ構造の整理や、条件に応じた要素の動的な統合といった、柔軟な集合操作を実現できます。例えば、関連するデータ群を要素として持つSetを、特定の条件でその関連データを展開して一つのSetにまとめるような場面で活用できます。

構文(syntax)

1require 'set'
2
3s = Set[Set[1, 2], 3]
4t = Set[Set[3, 4], 5]
5u = s.flatten_merge(t) { |x, y| x.is_a?(Set) && y.is_a?(Set) ? x + y : y }

引数(parameters)

set, seen = Set.new

  • set: マージする他のSetオブジェクト
  • seen = Set.new: 既に処理済みの要素を記録するためのSetオブジェクト(デフォルトは空のSet)

戻り値(return)

Set

集合内のネストされた集合をすべて展開し、それらを単一の集合にマージした新しい集合を返します。

関連コンテンツ

関連プログラミング言語