В 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."
Когда вы компилируете и запускаете программу, она выдает следующий вывод: