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.