W LeekScripcie istnieją „klasyczne” tablice typu „Array” oraz tablice asocjacyjne typu „Map”.
Ten nieco szczególny rodzaj tablicy pozwala rozwiązać pewien problem: załóżmy, że chcę zapamiętać cechy mojego pora, takie jak siła, mądrość, opór... Zrobiłem więc tablicę:
var monPoireau = []; push(monPoireau, getStrength()); push(monPoireau, getWisdom()); push(monPoireau, getResistance());
Mój problem polega teraz na tym, że muszę pamiętać, że siła jest w 1. komórce, mądrość w 2., a opór w 3... Teraz jeszcze pamiętam, ale za 2 tygodnie zupełnie zapomnę!
Rozwiązanie: zamiast numerować komórki, sprytniej byłoby nadać im czytelne nazwy. Otóż to możliwe i nazywa się to tablicami asocjacyjnymi!
var monPoireau = [:]; monPoireau["force"] = getStrength(); monPoireau["sagesse"] = getWisdom(); monPoireau["resistance"] = getResistance(); debug( monPoireau ); // Wyświetli coś w rodzaju ["force" : 150, "sagesse" : 20, "resistance" : 95] debug( monPoireau["force"] ); // Wyświetli 150
Czytelne nazwy (nazywamy je kluczami) to tutaj "force", "sagesse" i "resistance". W tym przykładzie widać, jak je deklarować i jak z nich korzystać. Klucze mogą być liczbami całkowitymi lub łańcuchami znaków.
Praktyczne! Ale w takim razie jak przejść po tablicy asocjacyjnej?
Poniższa pętla:
for (var k = 0; k maMap = [:];
W trybie ścisłym to typowanie jest niezbędne: na Map zadeklarowanej po prostu jako var m = [:] wstawienia się nie kompilują (błąd typu), podczas gdy na Map są akceptowane.
Następnie po mapie można iterować tak:
for (string maCle : integer maValeur in maMap) { debug("Pour la clé " + maCle + " la valeur qui correspond est " + maValeur); }
Teraz twoja kolej, by z nich korzystać. Zobaczysz — gdy już umie się ich używać, nie można się bez nich obejść!
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.