Funktioner

Funktioner

> LeekScript vejledning

I et program er det vigtigste at strukturere sin kode godt. For det har du lært brugen af kommentarer og det er omtrent det hele... Men det vil vi hurtigt ændre med funktioner, en af de vigtigste begreber i programmering, og du vil hurtigt forstå. Du er allerede stødt på og endda brugt dem i kapitlet om Native Functions.

Hvad er dette?

En funktion er en sekvens af instruktioner, intet mere. Så ikke mere kode duplikering, bare kald den funktion, der vil udføre disse instruktioner. For at gøre funktionerne mere alsidige kan du give dem parametre såsom den porre du vil ramme, antallet af resterende MP'er for denne tur osv. Derudover kan funktionen returnere en værdi som et array med alle kasserne tilgængelige for vores porre. Her er prototypen, dvs. signaturen, af en funktion:

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

Prototypen er beskrivelsen af funktionen: dens navn, dens returnering, hvis der er en, og dens parametre, som også er valgfrie. Definitionen af en funktion er det sæt instruktioner, der findes i den. Alle prototyper af de indbyggede funktioner er tilgængelige i dokumentationen. Til venstre, på listen over funktioner sorteret efter tema, hvis vi vælger "Brug våben" i kategorien våben, finder vi dette: !UseWeapon-Mod

Hvad sker der, når du kalder en funktion?

Når du kalder en funktion, holder 'hoved'-programmet pause for at udføre det program, der er gemt i funktionen. Så i slutningen af denne funktion, genoptages 'hoved'-programmet, hvor det slap.

Udtalelsen

Vi taler også om deklaration for funktioner. Faktisk tilbyder LS native funktioner klar til brug, såsom "getNearestEnemy / useWeapon / ...". Men det er muligt at lave en selv. Her er syntaksen, du skal bruge:

funktion Funktionsnavn ( parameter1, parameter2, ..., parameterN ) { /* Vejledningen */ }

Det er ikke muligt at gøre alt i en funktion: erklæringen af en ny funktion såvel som erklæringen af en global variabel er forbudt!

For at være mere talende vil vi skabe en meget simpel funktion, dens formål vil være at komme tættere på midten af kortet, at starte en skjold-chip og en heal-chip. Her er dens prototype: (Bemærk at prototypen ikke skal indsættes i koden, undtagen i en kommentar for at forklare din funktion)

ArmorAndCare()

Intet kunne faktisk være enklere, vores funktion tager ikke nogen parametre og returnerer intet!

Det mangler stadig en definition her:

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

For at kalde funktionen er den ligesom de andre:

ArmorAndCare(); // Kom tættere på midten af kortet og start derefter ARMOR og CURE

Vigtig bemærkning, en funktion kan ikke få adgang til eksterne variabler undtagen globale. Man skal forestille sig, at når man kalder funktionen, så "lever" den i sin egen verden, og at det eneste den har adgang til er globale variabler og andre funktioner.

For at illustrere systemet af parametre og funktionsretur, tager vi dette eksempel:

// Prototype: getCellDistanceTo(leek): (Nummer) Afstand mellem min porre og den i parameter funktion getCellDistanceTo(porre){ return getCellDistance(getCell(), getCell(porre)); }

Ifølge prototypen tager funktionen en porre som parameter (dens ID), og returnerer afstanden mellem den og sin egen porre. Listen over parametre er (næsten) uendelig, bare adskil hver parameter med et komma. Returnering af funktionen sker med søgeordet 'return'. I dette eksempel returnerer funktionen 'getCellDistance' et tal, som vi returnerer direkte. Når funktionen støder på en 'retur', stopper den og genoptages på tidspunktet for funktionskaldet. For de interesserede kaldes princippet om at reducere antallet af parametre for en funktion 'curr'