Förstå kompileringsfel

Förstå kompileringsfel

> LeekScript handledning

Du kodar din AI som en välsignad. Raderna rullar och namnen på mycket logiska variabler och funktioner, som "sfatyu_2" följer varandra, livet är bra... Plötsligt ! "Spara"-tangenten trycks ned och din kod kontrolleras av kompilatorn. Det stöder din blick, intensivt... Och här är dramat! En (eller flera!) stora röda streck visas längst ner i din editor, vad kan dessa konstiga och esoteriska magiska formler betyda?

Den här guiden kommer att avslöja sanningen för dig så att du också kan bli vetande.

Ett slut på uttalandet förväntades här

Slut på instruktionen? Ja, det är ";" i slutet av varje rad. Detta meddelande indikerar en linje där en av dessa siffror saknas. Var dock försiktig! den angivna linjen är i allmänhet den linje som föregår eller följer efter den anklagade.

!Saknar en;

Här saknas ett ";" i slutet av rad 18, och meddelandet talar om för oss att raden före useWeapon inte har sitt semikolon!

Fix: moveToward(fiende);

Oväntat slut på filen

Mer lömsk! Det är samma fel som det föregående, men den här gången är det sista raden i din AI som inte har ett semikolon. !unexp EoF

Fix: useWeapon(enmy);

Detta kan också bero på en osluten String: !EoF 2

Fix: säg("Jag vann!");

Okänd variabel eller funktion

Vem har glömt att deklarera sin variabel? En kort återgång till handledningen om Variables och handledningen om Funktioner kan vara användbar.

!var eller funk okänd

Här deklareras inte variabeln 'fiende'. Du måste först skapa den med nyckelordet var. Fix: var enemy = getNearestEnemy();

Och för denna då? !ex okänd funktion

Jo författaren är bara en apa med ett tangentbord och såg inte att han använde "getNeerest" (som inte finns) istället för "getNearest", som deklarerades precis ovanför.

Det här variabelnamnet är inte tillgängligt

Du kan inte deklarera om en variabel med samma namn som en redan deklarerad variabel.

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

Rättelse (ful): var moi2 = 1 En bättre lösning skulle vara att använda namn som verkligen matchar rollen för dina variabler.

Varning: Det här felet kan också uppstå på grund av namnet på en global variabel.

Detta fel kommer också att falla på dig om du använder ett kommatecken istället för det vördade semikolonet: ![](https://imgur.com/cCpqtxS.png)

Fix: var enemy = getNearestEnemy();

Detta beror på den integrerade variabeldeklarationen: var variabel1 = 1, variabel2 = 2; är helt giltig syntax (se Variabler).

Detta funktionsnamn är inte tillgängligt

Liksom föregående fel kan du inte återanvända ett funktionsnamn som redan har använts.

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

Rättelse (mycket ful): function getNearest2() {

Kan inte använda detta parameternamn

Så vi försöker använda namnet på en global variabel som ett parameternamn, va? Vet du vad det kan kosta dig om du råkade ut för en av mina mindre vänliga kollegor?

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

Rättelse:

Slutlig parentes förväntas

Som felmeddelandet indikerar saknar den angivna raden en parentes. !fel om

Här ska rad 19 i koden vara if (not isAlive(enmy)) {

Ett värde förväntades här

Ett funktionsanrop inte stängt?? Här är vad du får! !förväntat värde

Fixa moveToward(fiende);

Felaktigt antal parametrar

Parametrar? kezako? En snabb genomgång av Funktioner handledningen är på sin plats!

!nb felaktig param

Här accepterar moveToward-funktionen från 1 till 2 parametrar, och vi ger den 0. Uppenbarligen träffar kompilatorn våra fingrar. Fixa moveToward(fiende); eller moveToward(fiende, mp); med mp ett nummer.

Observera att du kommer att få samma fel om du ger för många parametrar till en funktion (T.ex.: moveToward(enmy, mp, thing);).

Alla block har inte stängts

Vad är ett block? Tja, det är en kodsektion omgiven av { }. Här öppnade vi ett block med { utan att stänga det. !block ej stängda

Här saknas } efter slutet av if. Kompilatorn indikerar därför slutet på det aktuella blocket (här slutet av filen) för att indikera att vi glömt att stänga alla block. Rättelse:

Inga block att stänga

Denna situation är den omvända mot den föregående. Vi stängde ett block av