Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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);

SetSemiGroup であるため、++ 演算子を使って 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 を結合することができます。