F # - Карты

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

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

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

пример

(* 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, если на карте нет привязки.
удалять Удаляет элемент из домена карты. Если элемент отсутствует, исключение не возникает.
Попробуйте найти Искать элемент на карте, возвращая 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."

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

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.