F#-マップ

F#では、マップは値をキーに関連付ける特別な種類のセットです。マップは、セットの作成と同様の方法で作成されます。

マップの作成

マップは、Map.emptyを使用して空のマップを作成し、追加機能を使用してアイテムを追加することによって作成されます。次の例はこれを示しています-

(* Create an empty Map *)
let students =
   Map.empty. (* Creating an empty Map *)
      Add("Zara Ali", "1501").
      Add("Rishita Gupta", "1502").
      Add("Robin Sahoo", "1503").
      Add("Gillian Megan", "1504");;
printfn "Map - students: %A" students

(* Convert a list to Map *)
let capitals =
   [ "Argentina", "Buenos Aires";
      "France ", "Paris";
      "Chili", "Santiago";
      "Malaysia", " Kuala Lumpur";
      "Switzerland", "Bern" ]
   |> Map.ofList;;
printfn "Map capitals : %A" capitals

プログラムをコンパイルして実行すると、次の出力が生成されます。

Map - students: map
[("Gillian Megan", "1504"); ("Rishita Gupta", "1502"); ("Robin Sahoo", "1503
");
("Zara Ali", "1501")]
Map capitals : map
[("Argentina", "Buenos Aires"); ("Chili", "Santiago"); ("France ", "Paris");
("Malaysia", " Kuala Lumpur"); ("Switzerland", "Bern")]

キーを使用して、マップ内の個々の要素にアクセスできます。

(* Create an empty Map *)
let students =
   Map.empty. (* Creating an empty Map *)
      Add("Zara Ali", "1501").
      Add("Rishita Gupta", "1502").
      Add("Robin Sahoo", "1503").
      Add("Gillian Megan", "1504");;
printfn "Map - students: %A" students

(*Accessing an element using key *)
printfn "%A" students.["Zara Ali"]

プログラムをコンパイルして実行すると、次の出力が生成されます。

Map - students: map
[("Gillian Megan", "1504"); ("Rishita Gupta", "1502"); ("Robin Sahoo", "1503
");
("Zara Ali", "1501")]
"1501"

マップの基本操作

モジュール名を追加

次の表は、マップの基本的な操作を示しています-

メンバー 説明
追加 指定されたマップにバインディングが追加された新しいマップを返します。
含むキー 要素がマップのドメインにあるかどうかをテストします。
カウント マップ内のバインディングの数。
IsEmpty マップにバインディングがない場合はtrueを返します。
項目 マップ内の要素を検索します。マップにバインディングが存在しない場合、KeyNotFoundExceptionが発生します。
削除する マップのドメインから要素を削除します。要素が存在しない場合、例外は発生しません。
TryFind マップ内の要素を検索し、 Some 要素がマップのドメインにある場合の値と None そうでない場合。

次の例は、上記の機能のいくつかの使用法を示しています-

(* Create an empty Map *)
let students =
   Map.empty. (* Creating an empty Map *)
      Add("Zara Ali", "1501").
      Add("Rishita Gupta", "1502").
      Add("Robin Sahoo", "1503").
      Add("Gillian Megan", "1504").
      Add("Shraddha Dubey", "1505").
      Add("Novonil Sarker", "1506").
      Add("Joan Paul", "1507");;
printfn "Map - students: %A" students
printfn "Map - number of students: %d" students.Count

(* finding the registration number of a student*)
let found = students.TryFind "Rishita Gupta"
match found with
| Some x -> printfn "Found %s." x
| None -> printfn "Did not find the specified value."

プログラムをコンパイルして実行すると、次の出力が生成されます。

Map - students: map
[("Gillian Megan", "1504"); ("Joan Paul", "1507"); ("Novonil Sarker", "1506"
);
("Rishita Gupta", "1502"); ("Robin Sahoo", "1503");
("Shraddha Dubey", "1505"); ("Zara Ali", "1501")]
Map - number of students: 7
Found 1502.