Maps
优质
小牛编辑
129浏览
2023-12-01
在F#中,map是一种特殊的集合,它将值与key相关联。 创建地图的方式与创建集合的方式类似。
创建地图
通过使用Map.empty创建空映射并使用Add函数添加项来创建映射。 以下示例演示了这一点 -
例子 (Example)
(* 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")]
您可以使用键访问地图中的各个元素。
例子 (Example)
(* 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"
地图的基本操作
添加模块名称
下表显示了地图上的基本操作 -
会员 | 描述 |
---|---|
Add | 返回添加到给定地图的绑定的新地图。 |
ContainsKey | 测试元素是否在地图的域中。 |
Count | 地图中的绑定数量。 |
IsEmpty | 如果地图中没有绑定,则返回true。 |
Item | 在地图中查找元素。 如果地图中不存在绑定,则引发KeyNotFoundException。 |
Remove | 从地图的域中删除元素。 如果元素不存在,则不会引发异常。 |
TryFind | 查找地图中的元素,如果元素位于地图的域中则返回Some值,否则返回None 。 |
以下示例演示了上述某些功能的用法 -
例子 (Example)
(* 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.