Set と Map
💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。
Flix は平衡木に基づく(イミュータブルな)Set(セット)と Map(マップ)を強力にサポートしています。そのため、Set の要素と Map のキーは Order トレイトを実装している必要があります。
ヒント: Flix の
SetおよびMapデータ構造は、特定の操作を自動的に並列化します。そのような操作には、API ドキュメント内で@ParallelWhenPureという印が付けられています。
Set
空の Set は次のように記述します。
Set#{}
これは Set.empty() と同等です。Set リテラルは次のように記述します。
Set#{1, 2, 3}
Set.insert を使って Set に要素を挿入することができます(この関数は新しい Set を返します)。
let s1 = Set#{1, 2, 3};
let s2 = Set.insert(4, s1);
Set.memberOf を使って、Set がある要素を含んでいるかどうかを判定することができます。
let s = Set#{1, 2, 3};
Set.memberOf(2, s)
Set.union を使って 2 つの Set を結合することができます。
let s1 = Set#{1, 2, 3};
let s2 = Set#{3, 4, 5};
let sr = Set.union(s1, s2);
Set は SemiGroup であるため、++ 演算子を使って s1 ++ s2 と書くこともできます。
Map
空の Map は次のように記述します。
Map#{}
これは Map.empty() と同等です。Map リテラルは次のように記述します。
Map#{"a" => 1, "b" => 2, "c" => 3}
Map.insert を使って Map に要素を挿入することができます(この関数は新しい Map を返します)。
let m1 = Map#{"a" => 1, "b" => 2, "c" => 3};
let m2 = Map.insert("d", 4, m1);
Map.get を使って、あるキーに関連付けられた値を取得することができます。
let m = Map#{"a" => 1, "b" => 2, "c" => 3};
Map.get("b", m)
Map.get 関数は Option[v] を返します。
Map.unionWith および Map.unionWithKey 関数のいずれかを使って 2 つの Map を結合することができます。