Tablice asocjacyjne (Map)

Tablice asocjacyjne (Map)

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ść!