Maps in Miranda

Mapas son el tipo de datos asociativos incorporados en Julia (a veces llamados hashes o dicts en otros idiomas).

```julia
# Para crear un mapa vacío, usa la función Dict:
# `Dict{KeyType, ValueType}()`
m = Dict{String, Int}()

# Establece pares clave/valor usando la sintaxis típica `nombre[clave] = valor`.
m["k1"] = 7
m["k2"] = 13

# Imprimir un mapa mostrará todos sus pares clave/valor.
println("map: ", m)

# Obtén un valor para una clave con `nombre[clave]`.
v1 = m["k1"]
println("v1: ", v1)

# Si la clave no existe, se devuelve el valor cero del tipo de valor.
v3 = get(m, "k3", 0)
println("v3: ", v3)

# La función incorporada `length` devuelve el número de pares clave/valor cuando se llama a un mapa.
println("len: ", length(m))

# La función incorporada `delete!` elimina pares clave/valor de un mapa.
delete!(m, "k2")
println("map: ", m)

# Para eliminar todos los pares clave/valor de un mapa, puedes sustituir el mapa por un mapa vacío
empty!(m)
println("map: ", m)

# El segundo valor de retorno opcional al obtener un
# valor de un mapa indica si la clave estaba presente
# en el mapa. Esto puede usarse para distinguir entre
# claves ausentes y claves con valores cero como `0` o `""`.
# Aquí no necesitábamos el valor en sí, así que lo ignoramos.
_, prs = get(m, "k2", 0), haskey(m, "k2")
println("prs: ", prs)

# También puedes declarar e inicializar un nuevo mapa en
# la misma línea con esta sintaxis.
n = Dict("foo" => 1, "bar" => 2)
println("map: ", n)

# Utiliza funciones útiles del paquete `Base`.
if n == Dict("foo" => 1, "bar" => 2)
    println("n == n2")
end

Nota que los mapas aparecen en la forma Dict(k => v, k => v) cuando se imprimen con println.

$ julia maps.jl
map: Dict("k1" => 7, "k2" => 13)
v1: 7
v3: 0
len: 2
map: Dict("k1" => 7)
map: Dict()
prs: false
map: Dict("bar" => 2, "foo" => 1)
n == n2