F # - Mapas

En F #, un mapa es un tipo especial de conjunto que asocia los valores con key. Un mapa se crea de manera similar a como se crean los conjuntos.

Crear mapas

Los mapas se crean creando un mapa vacío usando Map.empty y agregando elementos usando la función Agregar. El siguiente ejemplo demuestra esto:

Ejemplo

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

Cuando compila y ejecuta el programa, produce el siguiente resultado:

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

Puede acceder a elementos individuales en el mapa usando la tecla.

Ejemplo

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

Cuando compila y ejecuta el programa, produce el siguiente resultado:

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

Operaciones básicas en mapas

Agregar nombre de módulo

La siguiente tabla muestra las operaciones básicas en mapas:

Miembro Descripción
Añadir Devuelve un nuevo mapa con el enlace agregado al mapa dado.
Contiene clave Comprueba si un elemento está en el dominio del mapa.
Contar El número de enlaces en el mapa.
Esta vacio Devuelve verdadero si no hay enlaces en el mapa.
Articulo Busque un elemento en el mapa. Genera KeyNotFoundException si no existe ningún enlace en el mapa.
Eliminar Elimina un elemento del dominio del mapa. No se genera ninguna excepción si el elemento no está presente.
TryFind Busque un elemento en el mapa, devolviendo un Some valor si el elemento está en el dominio del mapa y None si no.

El siguiente ejemplo demuestra los usos de algunas de las funcionalidades anteriores:

Ejemplo

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

Cuando compila y ejecuta el programa, produce el siguiente resultado:

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.