Funksjoner

Funksjoner

> LeekScript-veiledning

I et program er det viktigste å strukturere koden godt. For det har du lært bruken av kommentarer og det er omtrent alt... Men vi vil raskt endre det med funksjoner, en av de viktigste begrepene i programmering og du vil raskt forstå. Du har allerede kommet over og til og med brukt dem i kapittelet om Native Functions.

Hva er dette?

En funksjon er en sekvens av instruksjoner, ikke noe mer. Så ikke mer kodeduplisering, bare ring funksjonen som vil utføre disse instruksjonene. For å gjøre funksjonene mer allsidige, kan du gi dem parametere som purren du vil treffe, antall gjenværende parlamentsmedlemmer for denne svingen, etc. I tillegg kan funksjonen returnere en verdi som en matrise med alle boksene tilgjengelig for purren vår. Her er prototypen, dvs. signaturen, til en funksjon:

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

Prototypen er beskrivelsen av funksjonen: dens navn, dens retur hvis det er en og dens parametere som også er valgfrie. Definisjonen av en funksjon er settet med instruksjoner som finnes i den. Alle prototypene til de opprinnelige funksjonene er tilgjengelige i dokumentasjonen. Til venstre, i listen over funksjoner sortert etter tema, hvis vi velger "Bruk våpen" i kategorien våpen, finner vi dette: !UseWeapon-Mod

Hva skjer når du kaller en funksjon?

Når du kaller en funksjon, stopper 'hoved'-programmet for å utføre programmet som er lagret i funksjonen. Så på slutten av denne funksjonen, fortsetter 'hoved'-programmet der det slapp.

Uttalelsen

Vi snakker også om erklæring for funksjoner. Faktisk tilbyr LS native funksjoner klare til bruk som "getNearestEnemy / useWeapon / ...". Men det er mulig å lage en selv. Her er syntaksen for å ta i bruk:

funksjon Funksjonsnavn ( parameter1, parameter2, ..., parameterN ) { /* Instruksjonene */ }

Det er ikke mulig å gjøre alt i en funksjon: erklæringen av en ny funksjon samt erklæringen av en global variabel er forbudt!

For å si det mer, vi skal lage en veldig enkel funksjon, dens formål vil være å komme nærmere midten av kartet, å lansere en skjoldbrikke og en helbredelsesbrikke. Her er prototypen: (Merk at prototypen ikke skal legges inn i koden, bortsett fra i en kommentar for å forklare funksjonen din)

ArmorAndCare()

Ingenting kan faktisk være enklere, funksjonen vår tar ingen parametere og returnerer ingenting!

Det mangler fortsatt en definisjon her:

function ArmorAndCare(){ moveTowardCell(306); useChip(CHIP_ARMOR, getEntity()); useChip(CHIP_CURE, getEntity()); }

For å kalle funksjonen er den som de andre:

ArmorAndCare(); // Kom nærmere midten av kartet og start deretter ARMOR og CURE

Viktig merknad, en funksjon kan ikke få tilgang til eksterne variabler bortsett fra globale. Du må forestille deg at når du kaller funksjonen, "lever" den i sin egen verden og at det eneste den har tilgang til er globale variabler og andre funksjoner.

For å illustrere systemet med parametere og funksjonsretur, tar vi dette eksemplet:

// Prototype: getCellDistanceTo(leek): (Nummer) Avstand mellom purren min og parameteren i funksjon getCellDistanceTo(purre){ return getCellDistance(getCell(), getCell(purre)); }

I følge prototypen tar funksjonen en purre som parameter (dens ID), og returnerer avstanden mellom den og sin egen purre. Listen over parametere er (nesten) uendelig, bare skille hver parameter med et komma. Returen av funksjonen gjøres med nøkkelordet 'retur'. I dette eksemplet returnerer 'getCellDistance'-funksjonen et tall som vi returnerer direkte. Når funksjonen møter en "retur", stopper den og fortsetter på tidspunktet for funksjonsanropet. For de som er interessert, kalles prinsippet om å redusere antall parametere for en funksjon 'curr'