En LeekScript, il existe les tableaux "classiques" de type "Array", et les tableaux associatifs de type "Map".
Ce type de tableau un peu particulier va permettre de répondre à une problématique : supposons que je cherche à garder en mémoire les caractéristiques de mon poireau, comme la force, la sagesse, la résistance,... J'ai donc fait un tableau :
var monPoireau = []; push(monPoireau, getStrength()); push(monPoireau, getWisdom()); push(monPoireau, getResistance());
Mon problème, maintenant, c'est qu'il faut que je me souvienne que la force est en 1ère case, la sagesse en 2ème et la résistance en 3ème... Là tout de suite, ça va, mais dans 2 semaines, j'aurai complètement oublié !
La solution : au lieu de numéroter les cases, il serait plus ingénieux de leur donner un nom explicite. Eh bien c'est possible et ça s'appelle les tableaux associatifs !
var monPoireau = [:]; monPoireau["force"] = getStrength(); monPoireau["sagesse"] = getWisdom(); monPoireau["resistance"] = getResistance(); debug( monPoireau ); // Affichera quelque chose du genre ["force" : 150, "sagesse" : 20, "resistance" : 95] debug( monPoireau["force"] ); // Affichera 150
Les noms explicites (on les appelle des clés) sont ici "force", "sagesse" et "resistance". On voit dans cet exemple comment les déclarer et comment s'en servir. Les clés peuvent être des entiers ou des chaînes de caractères.
Pratique ! Mais du coup, comment on fait pour parcourir un tableau associatif ?
La boucle suivante :
for (var k = 0; k maMap = [:];
En mode strict, ce typage est indispensable : sur une Map déclarée simplement avec var m = [:], les insertions ne compilent pas (erreur de type), alors qu'elles sont acceptées sur une Map.
Ensuite on peut parcourir la map ainsi :
for (string maCle : integer maValeur in maMap) { debug("Pour la clé " + maCle + " la valeur qui correspond est " + maValeur); }
Maintenant, à vous de les utiliser. Vous verrez, une fois qu'on sait les utiliser, on ne peut plus s'en passer !
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.