Sløjfer

Sløjfer

> LeekScript vejledning

Før eller siden, når du begynder at kode, bliver du nødt til at gentage det samme stykke instruktion flere gange:

var enemy = getNearestEnemy();

brug Våben(fjende); brug Våben(fjende); brug Våben(fjende); brug Våben(fjende);

Dette er måske ikke et problem, når det kommer til at skyde 3-4 gange, men når du vil lave mere avancerede algoritmer, bliver du sandsynligvis nødt til at gentage instruktioner flere dusin gange, eller endda et antal variable gange, hvilket så ikke kan lade sig gøre. på denne måde. Det er her loops kommer ind i billedet. En løkke er et kodeelement, der gør det muligt at gentage en række instruktioner så mange gange som nødvendigt. Hver gang koden indeholdt i en loop gentages, taler vi om iteration.

var enemy = getNearestEnemy();

for(var i = 0; i < 4; i++) { brug Våben(fjende); } //det er straks flottere :)

Afhængigt af, hvad du vil gøre, er der flere typer sløjfer, som vi vil se nedenfor: "for", "mens", "gør mens", "foreach" loops. Det er sikkert mange forskellige sløjfer, og deres navn kan virke barbarisk, men hver har en særlig anvendelse, som vi vil se nedenfor.

mens loop

Denne løkke er den enkleste af alle. Mens betyder "Så længe... Gør...", denne løkke gør det så muligt at gentage en sekvens af instruktioner, så længe en given betingelse er verificeret. Tilstanden og instruktionen kan være alt og alt, såsom: tale mens jeg har handlingspunkter, bevæge sig fremad mens jeg har bevægelsespunkter, ...

Dens syntaks er som følger:

while(condition) { instruktioner; }

Naturligvis bør "tilstand" og "vejledning" erstattes med det nødvendige.

Gør-mens-løkke

Denne sløjfe er faktisk meget lig mens-løkken, der er set tidligere, bortset fra at den udfører instruktionerne mindst én gang, før tilstanden testes. Hvis en while-løkke kunne oversættes som "Så længe... Gør...", ville gør-mens-løkken hellere oversættes til "Do... Så længe..."

Dens syntaks er ret lig den for while-løkken, men oversætter godt nuancer mellem de to:

gør {// først udfører vi instruktionerne instruktioner; }while(condition);//så ser vi på betingelsen

for loop

For-løkken bruges primært til at bruge en tæller. Dens syntaks er lidt mere voluminøs end de andre loops, men den gør det muligt at fremhæve de vigtige egenskaber ved denne.

Dens syntaks er:

for(initialisering; tilstand; operation) { instruktioner; }

Betingelsen fungerer på samme måde som betingelsen for en while-løkke, men to nye elementer er dukket op: initialiseringen og operationen. Disse to elementer gør det så muligt at oprette tælleren for løkken (generelt er det et spørgsmål om at oprette eller ændre en variabel) og at opdatere den.

For at skyde tre gange kan du f.eks. gøre:

var enemy = getNearestEnemy();

for(var tæller = 0; tæller < 3; tæller += 1) { brug Våben(fjende); }

Vi kan bemærke, at denne kode også kan oprettes med de tidligere sløjfer:

var enemy = getNearestEnemy();

var tæller = 0; while(tæller < 3) { tæller += 1; brug Våben(fjende); }

Men her er tælleren og dens stigning ikke fremhævet, hvilket syntaksen for for-løkken tillader.

for hver sløjfe

Denne løkke er lidt speciel: den er specialiseret i at krydse elementerne i et array. I stedet ville det betyde "For hvert [array-element] Gør...".

Den kan bruges på to forskellige måder, alt efter behov:

for(var værdi i matrix) { //ved hver iteration af løkken vil værdi være et element i arrayet. instruktioner; }

Nogle gange kan det være nødvendigt at kende positionen af det undersøgte element, den passende syntaks er da:

for(var position: var værdi i matrix) { //ved hver iteration af løkken vil værdi være et element i arrayet og placere dens position i arrayet, så vi vil have: array[position] == værdi instruktioner; }

For at få listen over effekter, en chip vil have, kan du f.eks. gøre:

for(var effekt i getChipEffects(CHIP_DEVIL_STRIKE)) { if(effekt[0] == EFFEKT_SKADE) say("det gør ondt"); }

Bemærk: variablerne "position" og "værdi" kan oprettes før løkken:

var værdi, position; for(position: værdi i matrix) { //ved hver iteration af løkken vil værdi være et element i arrayet. instruktioner; }

Du skal være forsigtig med denne løkke: at ændre arrayet under dets kørsel kan virkelig forårsage irriterende fejl i din kode, så dette skal undgås så meget som muligt.

Vigtigt Fra version 1.17 den 31. oktober 2020 kan "for (var key: var @value in array)"-syntaksen bruges til at gennemse