Associativa arrayer eller Map

Associativa arrayer eller Map

I LeekScript finns det "klassiska" arrayer av typen "Array" och associativa arrayer av typen "Map".

Den här lite speciella typen av array löser ett problem: anta att jag vill spara min purjolöks egenskaper i minnet, som styrka, visdom, motstånd... Så jag gjorde en array:

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

Mitt problem nu är att jag måste komma ihåg att styrkan ligger på plats 1, visdomen på plats 2 och motståndet på plats 3... Just nu går det bra, men om två veckor har jag glömt det helt!

Lösningen: i stället för att numrera platserna vore det smartare att ge dem ett tydligt namn. Och det är möjligt – det kallas associativa arrayer!

var monPoireau = [:]; monPoireau["force"] = getStrength(); monPoireau["sagesse"] = getWisdom(); monPoireau["resistance"] = getResistance(); debug( monPoireau ); // Visar något i stil med ["force" : 150, "sagesse" : 20, "resistance" : 95] debug( monPoireau["force"] ); // Visar 150

De tydliga namnen (de kallas nycklar) är här "force", "sagesse" och "resistance". I exemplet ser man hur man deklarerar dem och hur man använder dem. Nycklarna kan vara heltal eller strängar.

Praktiskt! Men hur gör man då för att gå igenom en associativ array?

Följande loop:

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

I strikt läge är den här typningen nödvändig: på en Map som bara deklarerats med var m = [:] kompilerar inte insättningarna (typfel), medan de accepteras på en Map.

Sedan kan man gå igenom mappen så här:

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

Nu är det din tur att använda dem. Du kommer att märka att när man väl kan använda dem klarar man sig inte utan dem!