В F # карта — это особый вид набора, который связывает значения с ключом. Карта создается аналогично тому, как создаются наборы.
Создание карт
Карты создаются путем создания пустой карты с помощью Map.empty и добавления элементов с помощью функции Add. Следующий пример демонстрирует это —
пример
(* 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"
Основные операции на картах
Добавить имя модуля
В следующей таблице приведены основные операции на картах —
| член | Описание |
|---|---|
| добавлять | Возвращает новую карту с привязкой, добавленной к данной карте. |
| ContainsKey | Проверяет, находится ли элемент в домене карты. |
| подсчитывать | Количество привязок на карте. |
| Пустой | Возвращает 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."
Когда вы компилируете и запускаете программу, она выдает следующий вывод: