Functies

Functies

> LeekScript-zelfstudie

In een programma is het belangrijkste om de code goed te structureren. Daarvoor heb je het gebruik van commentaren geleerd en dat is alles... Maar we zullen dat snel veranderen met functies, een van de belangrijkste begrippen in programmeren en je zult het snel begrijpen. Je bent ze al tegengekomen en zelfs gebruikt in het hoofdstuk over Native Functions.

Wat is dat ?

Een functie is een reeks instructies, niets meer. Dus geen codeduplicatie meer, roep gewoon de functie aan die deze instructies zal uitvoeren. Om de functies veelzijdiger te maken, kun je ze parameters geven zoals de prei die je wilt raken, het aantal resterende MP's voor deze beurt, enz. Bovendien kan de functie een waarde retourneren zoals een array met alle vakken die toegankelijk zijn voor onze prei. Hier is het prototype, d.w.z. de handtekening, van een functie:

NomDeLaFunction ( parameter1, parameter2, ..., parameterN ): Return

Het prototype is de beschrijving van de functie: de naam, de terugkeer als die er is en de parameters die ook optioneel zijn. De definitie van een functie is de set instructies die erin aanwezig is. Alle prototypen van de native functies zijn toegankelijk in de documentatie. Aan de linkerkant, in de lijst met functies gesorteerd op thema, als we "Gebruik wapen" selecteren in de categorie Wapens, vinden we dit: !GebruikWeapon-Mod

Wat gebeurt er als je een functie aanroept?

Bij het aanroepen van een functie pauzeert het 'hoofd'-programma om het in de functie opgeslagen programma uit te voeren. Aan het einde van deze functie gaat het 'hoofd'-programma verder waar het gebleven was.

De verklaring

We praten ook over declaratie voor functies. De LS biedt inderdaad kant-en-klare native functies zoals "getNearestEnemy / useWeapon / ...". Maar het is mogelijk om er zelf een te maken. Hier is de syntaxis die moet worden gebruikt:

functie FunctieNaam ( parameter1, parameter2, ..., parameterN ) { /* De instructies */ }

Het is niet mogelijk om alles in een functie te doen: zowel de declaratie van een nieuwe functie als de declaratie van een globale variabele is verboden!

Om meer te spreken, we gaan een heel eenvoudige functie maken, het doel ervan is om dichter bij het midden van de kaart te komen, om een schildchip en een geneeschip te lanceren. Hier is het prototype: (Merk op dat het prototype niet in de code mag worden geplaatst, behalve in een commentaar om uw functie uit te leggen)

ArmorAndCare()

Niets is eenvoudiger, onze functie neemt geen parameters en retourneert niets!

Het ontbreekt hier nog steeds aan een definitie:

functie ArmorAndCare(){ verplaatsTowardCell(306); gebruikChip(CHIP_ARMOR, getEntity()); gebruikChip(CHIP_CURE, getEntity()); }

Om de functie aan te roepen, is het net als de andere:

ArmorAndCare(); // Kom dichter bij het midden van de kaart en start dan ARMOR en CURE

Belangrijke opmerking: een functie heeft geen toegang tot externe variabelen, behalve globale variabelen. Je moet je voorstellen dat wanneer je de functie aanroept, deze in zijn eigen wereld "leeft" en dat het enige waartoe hij toegang heeft globale variabelen en andere functies zijn.

Om het systeem van parameters en functie-returns te illustreren, nemen we dit voorbeeld:

// Prototype: getCellDistanceTo(leek): (Number) Afstand tussen mijn prei en die in parameter functie getCellDistanceTo(prei){ retourneer getCellDistance(getCell(), getCell(prei)); }

Volgens het prototype neemt de functie een prei als parameter (zijn ID) en retourneert de afstand tussen de prei en zijn eigen prei. De lijst met parameters is (bijna) oneindig, scheid elke parameter gewoon met een komma. Het retourneren van de functie gebeurt met het trefwoord 'return'. In dit voorbeeld retourneert de functie 'getCellDistance' een getal dat we rechtstreeks retourneren. Wanneer de functie een 'terugkeer' tegenkomt, stopt deze en wordt deze hervat op het punt van de functieaanroep. Voor geïnteresseerden wordt het principe van het verminderen van het aantal parameters van een functie de 'curr' genoemd