F#地圖

2018-12-15 15:54 更新

在F#中,Map是一種特殊類型的集合,將值與鍵相關(guān)聯(lián)。 以與創(chuàng)建集合類似的方式創(chuàng)建Map。

創(chuàng)建Map

通過使用Map.empty創(chuàng)建空映射并使用Add函數(shù)添加項來創(chuàng)建映射。 下面的例子演示了這一點。

(* 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

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

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")]

您可以使用key訪問map中的各個元素

(* 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"]

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

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

在Map上的基本操作

添加模塊名稱

下表是Map上的基本操作 -

函數(shù)描述
Add返回與綁定添加到給定的地圖新地圖。
ContainsKey測試元素是否在地圖中的域。
Count在地圖上綁定的數(shù)量。
IsEmpty如果在地圖上沒有綁定,則返回true。
Item查找地圖中的元素。如果沒有綁定存在于地圖引發(fā)KeyNotFoundException。
Remove從地圖中刪除域的元素。如果該元素不存在任何異常。
TryFind在地圖中查找元素,如果元素在地圖的域中,則返回一個值,而不是Noneif。

下面的例子演示了上述一些功能的使用 

(* 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."

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

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.
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號