Kompilierungsfehler verstehen

Kompilierungsfehler verstehen

> LeekScript-Tutorial

Du kodierst deine KI wie ein Gesegneter. Die Zeilen scrollen, und die Namen von sehr logischen Variablen und Funktionen, wie sfatyu_2, folgen aufeinander, das Leben ist gut... Plötzlich ! Die "Speichern"-Taste wird gedrückt und Ihr Code wird vom Compiler überprüft. Es unterstützt Ihren Blick, intensiv... Und hier ist das Drama! Am unteren Rand Ihres Editors erscheinen eine (oder mehrere!) große rote Linien. Was können diese seltsamen und esoterischen Zauberformeln bedeuten?

Dieser Leitfaden wird Ihnen die Wahrheit offenbaren, damit auch Sie Wissende werden können.

Hier wurde ein Ende der Anweisung erwartet

Ein Ende des Unterrichts? Ja, es ist das ";" am Ende jeder Zeile. Diese Meldung weist auf eine Zeile hin, in der eines dieser Zeichen fehlt. Seien Sie jedoch vorsichtig! die angezeigte Zeile ist im Allgemeinen die Zeile, die der beschuldigten vorangeht oder folgt.

!Eins fehlt;

Hier fehlt ein ";" am Ende von Zeile 18, und die Meldung sagt uns, dass die Zeile vor useWeapon kein Semikolon hat!

Fix: moveToward(enemy);

Unerwartetes Dateiende

Eher heimtückisch! Es ist derselbe Fehler wie beim vorherigen, aber diesmal ist es die letzte Zeile Ihrer KI, die kein Semikolon hat. !unexp EoF

Fix: useWeapon(enemy);

Dies kann auch an einem nicht geschlossenen String liegen: !EoF 2

Fix: say("Ich habe gewonnen!");

Unbekannte Variable oder Funktion

Wer hat vergessen, seine Variable zu deklarieren? Eine kurze Rückkehr zum Tutorial zu Variablen und zum Tutorial zu Funktionen kann sich als nützlich erweisen.

!var oder func unbekannt

Hier wird die 'enemy'-Variable nicht deklariert. Sie müssen es zuerst mit dem Schlüsselwort "var" erstellen. Fix: var feind = getNearestEnemy();

Und für diesen dann? !zB unbekannte Funktion

Nun, der Autor ist nur ein Affe mit einer Tastatur und hat nicht gesehen, dass er getNeerest (das nicht existiert) anstelle von getNearest verwendet hat, das oben deklariert wurde.

Dieser Variablenname ist nicht verfügbar

Sie können eine Variable mit demselben Namen wie eine bereits deklarierte Variable nicht erneut deklarieren.

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

Korrektur (hässlich): var moi2 = 1 Eine bessere Lösung wäre es, Namen zu verwenden, die wirklich der Rolle Ihrer Variablen entsprechen.

Warnung: Dieser Fehler kann auch wegen des Namens einer globalen Variablen auftreten.

Dieser Fehler wird Ihnen auch auffallen, wenn Sie anstelle des verehrten Semikolons ein Komma verwenden: ![](https://imgur.com/cCpqtxS.png)

Fix: var feind = getNearestEnemy();

Dies liegt an der Inline-Variablendeklaration: var variable1 = 1, variable2 = 2; ist eine vollkommen gültige Syntax (siehe Variablen).

Dieser Funktionsname ist nicht verfügbar

Wie beim vorherigen Fehler können Sie einen bereits verwendeten Funktionsnamen nicht wiederverwenden.

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

Korrektur (sehr hässlich): function getNearest2() {

Dieser Parametername kann nicht verwendet werden

Wir versuchen also, den Namen einer globalen Variablen als Parameternamen zu verwenden, oder? Weißt du, was es dich kosten könnte, wenn du dich mit einem meiner weniger freundlichen Kollegen zerstreitest?

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

Korrektur:

Schließende Klammer erwartet

Wie die Fehlermeldung anzeigt, fehlt in der angezeigten Zeile eine Klammer. !Falsch wenn

Hier sollte Zeile 19 des Codes if (not isAlive(enemy)) { lauten

Hier wurde ein Wert erwartet

Ein Funktionsaufruf nicht geschlossen?? Hier ist, was Sie bekommen! !erwarteter Wert

Fix moveToward(enemy);

Falsche Parameteranzahl

Parameter? Kezako? Eine kurze Überprüfung des Funktionen-Tutorials ist angebracht!

!Achtung: falscher Parameter

Hier akzeptiert die moveToward-Funktion 1 bis 2 Parameter und wir geben ihr 0. Offensichtlich schlägt uns der Compiler auf die Finger. Korrigiere moveToward(enemy); oder moveToward(enemy, mp); mit mp einer Zahl.

Beachten Sie, dass Sie denselben Fehler erhalten, wenn Sie einer Funktion zu viele Parameter geben (zB: moveToward(enemy, mp, thing);).

Nicht alle Blöcke wurden geschlossen

Was ist ein Block? Nun, es ist ein Codeabschnitt, der von { } umgeben ist. Hier haben wir einen Block mit { geöffnet, ohne ihn zu schließen. !Blöcke nicht geschlossen

Hier fehlt das } nach dem Ende des if. Der Compiler zeigt daher das Ende des aktuellen Blocks (hier das Ende der Datei) an, um anzuzeigen, dass wir vergessen haben, alle Blöcke zu schließen. Korrektur:

Keine Blöcke zum Schließen

Diese Situation ist die Umkehrung der vorherigen. Wir haben einen Block av geschlossen