Maps
Un Map almacena pares clave-valor con búsqueda rápida por clave. Los maps se crean con Map.new() y soportan inserción, recuperación, prueba de pertenencia y enumeración de claves.
Código
// Maps: Map.new(), insert, get, has, size, iterar con keys()
fn main() -> int {
var capitales: Map = Map.new()
// Insertar pares clave-valor
capitales.insert("Argentina", "Buenos Aires")
capitales.insert("Francia", "Paris")
capitales.insert("Japon", "Tokio")
// size
print("paises: " + int_to_string(capitales.size()))
// get
let capital: String = capitales.get("Francia")
print("Capital de Francia: " + capital)
// has
print("tiene Argentina: " + int_to_string(capitales.has("Argentina")))
print("tiene Brasil: " + int_to_string(capitales.has("Brasil")))
// Iterar claves
let ks: Array = capitales.keys()
print("claves (" + int_to_string(ks.length()) + "):")
for k in ks {
print(" " + k)
}
return 0
}
Salida
paises: 3 Capital de Francia: Paris tiene Argentina: 1 tiene Brasil: 0 claves (3): Argentina Francia Japon
Explicación
Los maps en Nyx se crean con Map.new() — no existe una sintaxis de map literal (sería ambigua con las expresiones de bloque). Los maps deben declararse con var si se pretende insertar o modificar entradas después de la creación.
El método .insert(key, value) agrega o actualiza un par clave-valor. .get(key) obtiene el valor de una clave, devolviendo el valor almacenado como String (o el tipo correspondiente). Si la clave no existe, el comportamiento es indefinido — use .has(key) primero para verificar la pertenencia.
.has(key) devuelve un int: 1 significa que la clave existe, 0 que no existe. Este patrón de entero como booleano es común en las funciones de salida de bajo nivel de Nyx. .size() devuelve la cantidad de entradas actualmente en el map.
.keys() devuelve un Array con todas las claves del map. El orden de iteración sobre los hash maps no está garantizado que sea el orden de inserción, por lo que el orden de las claves en la salida puede variar entre ejecuciones.
Source: examples/by-example/06-maps.nx