Lussen

Lussen

> LeekScript-zelfstudie

Vroeg of laat, wanneer u begint met coderen, moet u dezelfde instructie meerdere keren herhalen:

var vijand = haal Dichtstbijzijnde Vijand();

gebruik Wapen (vijand); gebruik Wapen (vijand); gebruik Wapen (vijand); gebruik Wapen (vijand);

Dit is misschien geen probleem als het gaat om 3-4 keer vuren, maar als je meer geavanceerde algoritmen wilt gebruiken, zul je de instructies waarschijnlijk tientallen keren moeten herhalen, of zelfs een aantal variabele keren, wat dan niet kan worden gedaan op deze manier. Dit is waar loops in het spel komen. Een lus is een code-element waarmee een reeks instructies zo vaak als nodig kan worden herhaald. Elke keer dat de code in een lus wordt herhaald, spreken we van iteratie.

var vijand = haal Dichtstbijzijnde Vijand();

voor(var i = 0; i < 4; i++) { gebruik Wapen (vijand); } //het is meteen mooier :)

Afhankelijk van wat je wilt doen, zijn er verschillende soorten loops die we hieronder zullen zien: "for", "while", "do while", "foreach" loops. Dat zijn waarschijnlijk een heleboel verschillende loops, en hun naam lijkt misschien barbaars, maar elk heeft een specifiek gebruik, zoals we hieronder zullen zien.

herhalingslus

Deze lus is de eenvoudigste van allemaal. While betekent "Zolang... Doen...", deze lus maakt het vervolgens mogelijk om een reeks instructies te herhalen, zolang een bepaalde voorwaarde wordt geverifieerd. De voorwaarde en de instructie kan van alles zijn, zoals: praten terwijl ik actiepunten heb, vooruitgaan terwijl ik bewegingspunten heb, ...

De syntaxis is als volgt:

terwijl(voorwaarde) { instructies; }

Natuurlijk moeten "conditie" en "instructies" worden vervangen door wat nodig is.

Do-while-lus

Deze lus lijkt eigenlijk sterk op de eerder geziene while-lus, behalve dat de instructies minstens één keer worden uitgevoerd voordat de voorwaarde wordt getest. Als een while-lus zou kunnen worden vertaald als "Zolang... Doen...", dan zou de do-while-lus eerder kunnen worden vertaald als "Doen... As long as..."

De syntaxis is vrij gelijkaardig aan die van de while-lus, maar vertaalt de nuance tussen de twee goed:

doen {// eerst voeren we de instructies uit instructies; }while(condition);//dan kijken we naar de conditie

for loop

De for-lus wordt voornamelijk gebruikt om een teller te gebruiken. De syntaxis is iets volumineuzer dan die van de andere loops, maar het maakt het mogelijk om de belangrijke kenmerken van deze te benadrukken.

De syntaxis is:

for(initialisatie; voorwaarde; bewerking) { instructies; }

De voorwaarde werkt op dezelfde manier als de voorwaarde van een while-lus, maar er zijn twee nieuwe elementen verschenen: de initialisatie en de bewerking. Deze twee elementen maken het vervolgens mogelijk om de teller van de lus te maken (meestal gaat het om het maken of wijzigen van een variabele) en om deze bij te werken.

Om bijvoorbeeld drie keer te schieten, kunt u het volgende doen:

var vijand = haal Dichtstbijzijnde Vijand();

for(var teller = 0; teller < 3; teller += 1) { gebruik Wapen (vijand); }

We kunnen zien dat deze code ook kan worden gemaakt met de vorige lussen:

var vijand = haal Dichtstbijzijnde Vijand();

var teller = 0; terwijl(teller < 3) { teller += 1; gebruik Wapen (vijand); }

Maar hier worden de teller en de toename niet gemarkeerd, wat de syntaxis van de for-lus wel toestaat.

voor elke lus

Deze lus is een beetje speciaal: hij is gespecialiseerd in het doorlopen van de elementen van een array. In plaats daarvan zou het betekenen "Voor elk [array-element] Do...".

Het kan op twee verschillende manieren worden gebruikt, afhankelijk van de behoeften:

for(var waarde in array) { // bij elke iteratie van de lus zal waarde een element van de array zijn. instructies; }

Soms kan het nodig zijn om de positie van het bestudeerde element te kennen, de juiste syntaxis is dan:

for(var positie: var waarde in array) { // bij elke iteratie van de lus zal waarde een element van de array zijn en zijn positie in de array positioneren, dus we hebben: array[positie] == waarde instructies; }

Om bijvoorbeeld de lijst met effecten te krijgen die een chip zal hebben, kun je het volgende doen:

voor(var effect in getChipEffects(CHIP_DEVIL_STRIKE)) { als(effect[0] == EFFECT_SCHADE) say("het doet pijn"); }

Opmerking: de variabelen "positie" en "waarde" kunnen vóór de lus worden gemaakt:

var waarde, positie; voor(positie: waarde in array) { // bij elke iteratie van de lus zal waarde een element van de array zijn. instructies; }

Je moet voorzichtig zijn met deze lus: het wijzigen van de array tijdens het uitvoeren kan inderdaad vervelende bugs in je code veroorzaken, dus dit moet zoveel mogelijk worden vermeden.

Belangrijk Vanaf versie 1.17 op 31 oktober 2020 kan de syntaxis for (var key: var @value in array) worden gebruikt om te bladeren