Los arrays asociativos o Map

Los arrays asociativos o Map

En LeekScript existen los arrays "clásicos" de tipo "Array", y los arrays asociativos de tipo "Map".

Este tipo de array un poco particular va a permitir responder a un problema: supongamos que quiero guardar en memoria las características de mi puerro, como la fuerza, la sabiduría, la resistencia... Así que he hecho un array:

var monPoireau = []; push(monPoireau, getStrength()); push(monPoireau, getWisdom()); push(monPoireau, getResistance());

Mi problema, ahora, es que tengo que acordarme de que la fuerza está en la 1.ª casilla, la sabiduría en la 2.ª y la resistencia en la 3.ª... Ahora mismo, vale, ¡pero dentro de 2 semanas se me habrá olvidado por completo!

La solución: en lugar de numerar las casillas, sería más ingenioso darles un nombre explícito. Pues bien, es posible, ¡y se llama arrays asociativos!

var monPoireau = [:]; monPoireau["force"] = getStrength(); monPoireau["sagesse"] = getWisdom(); monPoireau["resistance"] = getResistance(); debug( monPoireau ); // Mostrará algo del estilo ["force" : 150, "sagesse" : 20, "resistance" : 95] debug( monPoireau["force"] ); // Mostrará 150

Los nombres explícitos (se llaman claves) son aquí "force", "sagesse" y "resistance". En este ejemplo se ve cómo declararlos y cómo usarlos. Las claves pueden ser enteros o cadenas de caracteres.

¡Práctico! Pero entonces, ¿cómo se recorre un array asociativo?

El bucle siguiente:

for (var k = 0; k maMap = [:];

En modo estricto, este tipado es indispensable: en una Map declarada simplemente con var m = [:], las inserciones no compilan (error de tipo), mientras que sí se aceptan en una Map.

Después se puede recorrer la map así:

for (string maCle : integer maValeur in maMap) { debug("Pour la clé " + maCle + " la valeur qui correspond est " + maValeur); }

Ahora te toca a ti usarlos. Ya verás, una vez que se sabe usarlos, ¡no se puede vivir sin ellos!