F # - Mapas

Em F #, um mapa é um tipo especial de conjunto que associa os valores à chave. Um mapa é criado de maneira semelhante à criação de conjuntos.

Criação de mapas

Os mapas são criados criando um mapa vazio usando Map.empty e adicionando itens usando a função Adicionar. O exemplo a seguir demonstra isso -

Exemplo

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

Quando você compila e executa o programa, ele produz a seguinte saída -

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

Você pode acessar elementos individuais no mapa usando a tecla.

Exemplo

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

Quando você compila e executa o programa, ele produz a seguinte saída -

Map - students: map
[("Gillian Megan", "1504"); ("Rishita Gupta", "1502"); ("Robin Sahoo", "1503
");
("Zara Ali", "1501")]
"1501"

Operações básicas em mapas

Adicionar nome de módulo

A tabela a seguir mostra as operações básicas em mapas -

Membro Descrição
Adicionar Retorna um novo mapa com o vínculo adicionado ao mapa fornecido.
ContainsKey Testa se um elemento está no domínio do mapa.
Contagem O número de ligações no mapa.
Está vazia Retorna verdadeiro se não houver vínculos no mapa.
Item Procure um elemento no mapa. Gera KeyNotFoundException se nenhuma ligação existir no mapa.
Remover Remove um elemento do domínio do mapa. Nenhuma exceção é gerada se o elemento não estiver presente.
TryFind Procure um elemento no mapa, retornando um Some valor se o elemento estiver no domínio do mapa e None se não.

O exemplo a seguir demonstra o uso de algumas das funcionalidades acima -

Exemplo

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

Quando você compila e executa o programa, ele produz a seguinte saída -

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.