I LeekScript findes der "klassiske" arrays af typen "Array" og associative arrays af typen "Map".
Denne lidt særlige type array løser et konkret problem: Lad os sige, at jeg vil gemme min porres egenskaber, såsom styrke, visdom, modstand ... Så jeg har lavet et array:
var monPoireau = []; push(monPoireau, getStrength()); push(monPoireau, getWisdom()); push(monPoireau, getResistance());
Mit problem er nu, at jeg skal huske, at styrken ligger på 1. plads, visdommen på 2. og modstanden på 3. ... Lige nu går det fint, men om 2 uger har jeg fuldstændig glemt det!
Løsningen: I stedet for at nummerere pladserne ville det være smartere at give dem et sigende navn. Og det kan man faktisk – det hedder associative arrays!
var monPoireau = [:]; monPoireau["force"] = getStrength(); monPoireau["sagesse"] = getWisdom(); monPoireau["resistance"] = getResistance(); debug( monPoireau ); // Viser noget i stil med ["force" : 150, "sagesse" : 20, "resistance" : 95] debug( monPoireau["force"] ); // Viser 150
De sigende navne (man kalder dem nøgler) er her "force", "sagesse" og "resistance". I dette eksempel ser man, hvordan man erklærer dem, og hvordan man bruger dem. Nøgler kan være heltal eller strenge.
Praktisk! Men hvordan gennemløber man så et associativt array?
Følgende løkke:
for (var k = 0; k maMap = [:];
I streng tilstand er denne typeangivelse uundværlig: på en Map, der blot er erklæret med var m = [:], kompilerer indsættelser ikke (typefejl), mens de accepteres på en Map.
Derefter kan man gennemløbe mappen sådan her:
for (string maCle : integer maValeur in maMap) { debug("Pour la clé " + maCle + " la valeur qui correspond est " + maValeur); }
Nu er det op til dig at bruge dem. Du vil se, at når man først kan bruge dem, kan man ikke undvære dem!
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.