Учебники

F # — Карты

В F # карта — это особый вид набора, который связывает значения с ключом. Карта создается аналогично тому, как создаются наборы.

Создание карт

Карты создаются путем создания пустой карты с помощью Map.empty и добавления элементов с помощью функции Add. Следующий пример демонстрирует это —

пример

Live Demo

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

Вы можете получить доступ к отдельным элементам на карте, используя ключ.

пример

Live Demo

(* 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, если нет.

В следующем примере демонстрируется использование некоторых из перечисленных выше функций.

пример

Live Demo

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

Когда вы компилируете и запускаете программу, она выдает следующий вывод: