Forstå kompileringsfeil

Forstå kompileringsfeil

> LeekScript-veiledning

Du koder AI-en din som en velsignet. Linjene ruller, og navnene på veldig logiske variabler og funksjoner, som "sfatyu_2", følger hverandre, livet er bra... Plutselig! "Lagre"-tasten trykkes og koden din kontrolleres av kompilatoren. Den støtter blikket ditt, intenst... Og her er dramaet! En (eller flere!) store røde linjer vises nederst i redaktøren din, hva kan disse merkelige og esoteriske magiske formlene bety?

Denne guiden vil avsløre sannheten for deg slik at du også kan bli kunnskapsrike.

En slutt på uttalelsen var forventet her

En slutt på instruksjonen? Ja, det er ";" på slutten av hver linje. Denne meldingen indikerer en linje der en av disse figurene mangler. Vær imidlertid forsiktig! linjen som er angitt, er generelt linjen som går foran eller etter den som er inkriminert.

!Mangler en;

Her mangler en ";" på slutten av linje 18, og meldingen forteller oss at linjen før useWeapon ikke har sitt semikolon!

Fix: moveToward(enmy);

Uventet slutt på filen

Mer lumsk! Det er samme feil som den forrige, men denne gangen er det den siste linjen i AI-en din som ikke har semikolon. !unexp EoF

Fix: bruk våpen(fiende);

Dette kan også skyldes en ulukket String: !EoF 2

Fix: say("Jeg vant!");

Ukjent variabel eller funksjon

Hvem har glemt å oppgi variabelen sin? En kort tilbakevending til veiledningen om Variables og veiledningen om Functions kan være nyttig.

!var eller func ukjent

Her er 'fiende'-variabelen ikke deklarert. Du må først opprette det med nøkkelordet var. Fix: var enemy = getNearestEnemy();

Og for denne da? !eks ukjent funksjon

Vel, forfatteren er bare en ape med et tastatur, og så ikke at han brukte getNeerest (som ikke eksisterer) i stedet for getNearest, erklært rett ovenfor.

Dette variabelnavnet er utilgjengelig

Du kan ikke omerklære en variabel med samme navn som en allerede erklært variabel.

![](https://imgur.com/Qx5n006.png)

Korreksjon (stygg): var moi2 = 1 En bedre løsning ville være å bruke navn som virkelig samsvarer med rollen til variablene dine.

Advarsel: Denne feilen kan også vises på grunn av navnet på en global variabel.

Denne feilen vil også falle på deg hvis du bruker komma i stedet for det ærede semikolon: ![](https://imgur.com/cCpqtxS.png)

Fix: var enemy = getNearestEnemy();

Dette skyldes den innebygde variabeldeklarasjonen: var variabel1 = 1, variabel2 = 2; er perfekt gyldig syntaks (se Variables).

Dette funksjonsnavnet er utilgjengelig

Som den forrige feilen kan du ikke gjenbruke et funksjonsnavn som allerede er brukt.

![](https://imgur.com/UUfrixR.png)

Rettelse (veldig stygg): function getNearest2() {

Kan ikke bruke dette parameternavnet

Så vi prøver å bruke navnet på en global variabel som et parameternavn, ikke sant? Vet du hva det kan koste deg hvis du ramler ut med en av mine mindre vennlige kolleger?

![](https://imgur.com/xnAOUAV.png)

Rettelse:

Avslutningsparentes forventet

Som feilmeldingen indikerer, mangler den angitte linjen en parentes. !feil hvis

Her skal linje 19 i koden være if (not isAlive(enmy)) {

Det var forventet en verdi her

Et funksjonskall ikke lukket?? Her er hva du får! !forventet verdi

Fiks moveToward(fiende);

Feil antall parametere

Parametere? kezako? En rask gjennomgang av Functions-opplæringen er på sin plass!

!nb feil parameter

Her aksepterer moveToward-funksjonen fra 1 til 2 parametere, og vi gir den 0. Det er klart at kompilatoren treffer fingrene våre. Fiks moveToward(fiende); eller moveToward(fiende, mp); med mp et tall.

Merk at du vil få den samme feilmeldingen hvis du gir for mange parametere til en funksjon (F.eks.: moveToward(enmy, mp, thing);).

Ikke alle blokker er stengt

Hva er en blokk? Vel, det er en kodedel omgitt av { }. Her åpnet vi en blokk med { uten å lukke den. !blokker ikke lukket

Her mangler } etter slutten av hvis. Kompilatoren indikerer derfor slutten av gjeldende blokk (her slutten av filen) for å indikere at vi har glemt å lukke alle blokkene. Rettelse:

Ingen blokker å lukke

Denne situasjonen er motsatt av den forrige. Vi stengte en blokk av