Assosiative arrays eller Map

Assosiative arrays eller Map

I LeekScript finnes det både «klassiske» arrays av typen «Array» og assosiative arrays av typen «Map».

Denne litt spesielle typen array løser et konkret problem: la oss si at jeg vil huske egenskapene til purren min, som styrke, visdom, motstand, ... Så jeg lager et array:

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

Problemet mitt nå er at jeg må huske at styrken ligger i 1. plass, visdommen i 2. og motstanden i 3. ... Akkurat nå går det greit, men om 2 uker har jeg glemt det fullstendig!

Løsningen: i stedet for å nummerere plassene, ville det være smartere å gi dem et beskrivende navn. Vel, det er mulig, og det kalles assosiative arrays!

var monPoireau = [:]; monPoireau["force"] = getStrength(); monPoireau["sagesse"] = getWisdom(); monPoireau["resistance"] = getResistance(); debug( monPoireau ); // Viser noe sånt som ["force" : 150, "sagesse" : 20, "resistance" : 95] debug( monPoireau["force"] ); // Viser 150

De beskrivende navnene (som kalles nøkler) er her "force", "sagesse" og "resistance". I dette eksempelet ser vi hvordan de deklareres og hvordan de brukes. Nøklene kan være heltall eller strenger.

Praktisk! Men hvordan går man da gjennom et assosiativt array?

Følgende løkke:

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

I streng modus er denne typingen uunnværlig: på en Map som bare er deklarert med var m = [:], kompilerer ikke innsettinger (typefeil), mens de godtas på en Map.

Deretter kan man gå gjennom mappen slik:

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

Nå er det opp til deg å bruke dem. Du vil se at når man først har lært å bruke dem, klarer man seg ikke uten!