Bordene

Tabellerne

> LeekScript vejledning

Du kender helt sikkert analogien mellem computervariabler og bokse: Navnet på variablen står på boksens etiket; når du kalder variablen, ser du bare på, hvad der er i boksen.

Nå, vi kan lave en lignende analogi mellem malerier og en kommode. En kommode er et møbel, der indeholder flere skuffer... et bord er en enhed, der indeholder flere variable. Skematisk er det alt.

Initialiser et array

Et array er repræsenteret med firkantede parenteser. Eksemplet nedenfor opretter et tomt array:

var foo = [];

Vi genkender søgeordet var, som vi allerede bruger til variabler. foo er derfor en array type variabel.

var fruit = ["løg", "banan", "æble"];

Her har vi initialiseret arrayet med 3 værdier. Grundlæggende sætter vi kæden "løg" i den første skuffe, "banan" i den anden og "æble" i den tredje. Hvis vi havde vendt de første 2 frugter, ville vi have haft et andet billede.

Det er rart at rydde op, men man skal vide hvordan man bruger det... Nå, det er simpelt, hvis du ved, hvordan man tæller fra 0 (fordi i databehandling kan vi lide at tælle fra nul!)

Den første skuffe bærer tallet 0, den anden tallet 1 og den tredje tallet 2. Hvis vi havde en tabel med 100 celler, ville den sidste derfor bære tallet 99. Okay, hvad nu? Det er enkelt, at bruge en boks, skal du blot angive dens nummer mellem firkantede parenteser:

debug( frugt[1] );

Dette eksempel vil derfor vise boks nummer 1 (det andet felt, derfor) i tabellen kaldet frugter. Her vil den derfor vise strengen "banan".

Hvad hvis vi vil ændre værdien? Intet kunne være enklere, vi gør som for variablerne, og specificerer altid boksen, der skal ændres:

frugt[1] = "kirsebær"; debug( frugt ); // vil udsende ["løg", "kirsebær", "æble"]

Simpelt, ikke?

Hvad hvis jeg beder om en boks, der ikke findes? I det foregående eksempel spørger jeg frugt[3]?

Godt set! Den tredje boks er nummer 2, så boks nummer 3 findes ikke! I dette tilfælde returneres værdien ''null''.

Nå, jeg prøvede din ting med koden nedenfor, og den viser mærkelige ting, det ser ud til, at jeg har ødelagt alt!

var fruit = ["løg", "banan", "æble"]; debug( frugt ); // vil udsende ["løg", "banan", "æble"] frugt[3] = "ananas"; debug( frugt ); // vil udsende ["løg", "banan", "æble", "ananas"] frugt[50] = "kirsebær"; debug( frugt ); // vil udsende [0:"løg", 1:"banan", 2:"æble", 3:"ananas, 50:"kirsebær"]

Bare rolig, unge Padawan, du har slet ikke brudt noget! Da boksene mellem det sidste element i arrayet (nummer 3) og det du vil tilføje (nummer 50) ikke eksisterer, findes porrescriptet forvandlet dit array til et associativt array. Det vil jeg forklare dig i slutningen af denne tutorial. Tænk for øjeblikket på, at det er en normal tabel, hvor der er et hul i nummereringen af kasserne.

Nogle leewars-funktioner giver os direkte et array. Dette er for eksempel tilfældet med funktionen getAliveEnemies.

Gennemse en tabel

modstandere? Jeg ved ikke, hvor mange der er, og jeg har ikke tænkt mig at gøre alt i hånden!*

Effektivt. Den første idé ville være at gøre

var enemies = getAliveEnemies(); debug( getName(fjender[0]) ); debug( getName(fjender[1])); debug( getName(fjender[2])); debug( getName(fjender[3])); debug( getName(fjender[4]));

Men hvis der er mere end 5 fjender, vil der være mangel, og hvis der er færre, er der ekstra linjer! For at finde ud af, hvor mange kvadrater et array har, er funktionen count.

var nbEnemies = tælle(fjender); debug("der er " + nbEnemies + " fjender stadig i live.");

Nu, hvordan krydser man bordet uden at kæmpe? For eksempel, hvis du vil vide, hvor forhindringerne er på kortet, er getObstacles noget for dig... Men bordet har omkring hundrede kasser... ikke praktisk at lave én efter én! Det er nu, at Les Boucles afslører deres fulde potentiale!

var obstacles = getObstacles(); var nbObstacles = count(hindringer);

for (var k=0; k<nbObstacles; k++) { debug("boks " + forhindringer[k] + " er en forhindring."); }

For mere præcision, gå tilbage til selvstudiet om The Loops.

Så for fjendernes navn ville hele manuskriptet være

var enemies = getAliveEnemies(); var nbEnemies = tælle(fjender); for (var k=0; k<nbEnemies; k++) { var fjendenavn = getName( fjender[k] ); debug( fjendenavn + " er stadig i live."); }

Tilføjelse og fjernelse af elementer

Vi har allerede set, hvordan man tilføjer et element i et array, men det er ikke praktisk, fordi du hele tiden skal gøre det appellerer til arrayets størrelse.

For at gøre livet lettere kan du blot bruge push-funktionen.

var fruit = ["løg", "banan", "æble"]; skub (f