Comprensione degli errori di compilazione

Comprensione degli errori di compilazione

> Tutorial LeekScript

Codifichi la tua IA come un beato. Le linee scorrono e i nomi di variabili e funzioni molto logiche, come sfatyu_2 si susseguono, la vita è bella... All'improvviso ! Il tasto "salva" viene premuto e il codice viene controllato dal compilatore. Sostiene il tuo sguardo, intensamente... Ed ecco il dramma! Una (o più!) grosse linee rosse appaiono in fondo al tuo editor, cosa possono significare queste strane ed esoteriche formule magiche?

Questa guida ti rivelerà la verità in modo che anche tu possa diventare conoscitore.

Qui ci si aspettava una fine della dichiarazione

Fine dell'istruzione? Sì, è il ";" alla fine di ogni riga. Questo messaggio indica una riga in cui manca una di queste cifre. Attenzione però! il rigo indicato è in genere il rigo precedente o successivo a quello incriminato.

!Uno mancante;

Qui manca un ";" alla fine della riga 18, e il messaggio ci dice che la riga prima di useWeapon non ha il suo punto e virgola!

Correzione: moveToward(enemy);

Fine inaspettata del file

Più insidioso! È lo stesso errore del precedente, ma questa volta è l'ultima riga della tua intelligenza artificiale che non ha un punto e virgola. !unexp EoF

Correzione: useWeapon(enemy);

Ciò può anche essere dovuto a una String non chiusa: !EoF 2

Correzione: say("Ho vinto!");

Variabile o funzione sconosciuta

Chi ha dimenticato di dichiarare la propria variabile? Un breve ritorno al tutorial sulle Variables e al tutorial sulle Functions può rivelarsi utile.

!var o funzione sconosciuta

Qui, la variabile enemy non è dichiarata. Devi prima crearlo con la parola chiave var. Correzione: var nemico = getNearestEnemy();

E per questo allora? !ex funzione sconosciuta

Beh, l'autore è solo una scimmia con una tastiera, e non ha visto che ha usato getNeerest (che non esiste) invece di getNearest, dichiarato appena sopra.

Questo nome di variabile non è disponibile

Non è possibile ridichiarare una variabile con lo stesso nome di una variabile già dichiarata.

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

Correzione (brutta): var moi2 = 1 Una soluzione migliore sarebbe usare nomi che corrispondano realmente al ruolo delle tue variabili.

Avviso: questo errore può comparire anche a causa del nome di una variabile globale.

Questo errore ricadrà anche su di te se usi una virgola invece del venerato punto e virgola: ![](https://imgur.com/cCpqtxS.png)

Correzione: var nemico = getNearestEnemy();

Ciò è dovuto alla dichiarazione di variabile inline: var variabile1 = 1, variabile2 = 2; è una sintassi perfettamente valida (vedi Variabili).

Questo nome di funzione non è disponibile

Come l'errore precedente, non è possibile riutilizzare un nome di funzione che è già stato utilizzato.

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

Correzione (molto brutta): function getNearest2() {

Impossibile utilizzare questo nome di parametro

Quindi stiamo cercando di usare il nome di una variabile globale come nome di parametro, eh? Sai quanto ti potrebbe costare se litigassi con uno dei miei colleghi meno amichevoli?

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

Correzione:

Prevista parentesi di chiusura

Come indica il messaggio di errore, nella riga indicata manca una parentesi. !se sbagliato

Qui la riga 19 del codice dovrebbe essere if (not isAlive(enemy)) {

Qui era previsto un valore

Una chiamata di funzione non chiusa?? Ecco cosa ottieni! !valore previsto

Risolto il problema con moveToward(enemy);

Numero errato di parametri

Parametri? kezako? Una rapida revisione del tutorial Functions è d'obbligo!

!nb parametro errato

Qui, la funzione moveToward accetta da 1 a 2 parametri, e gli diamo 0. Ovviamente il compilatore ci picchia le dita. Correggi moveToward(enemy); o moveToward(enemy, mp); con mp un numero.

Nota che otterrai lo stesso errore se fornisci troppi parametri a una funzione (Es: moveToward(enemy, mp, thing);).

Non tutti i blocchi sono stati chiusi

Cos'è un blocco? Beh, è una sezione di codice circondata da { }. Qui, abbiamo aperto un blocco con { senza chiuderlo. !blocchi non chiusi

Qui il } manca dopo la fine del if. Il compilatore indica quindi la fine del blocco corrente (qui la fine del file) per indicare che ci siamo dimenticati di chiudere tutti i blocchi. Correzione:

Nessun blocco da chiudere

Questa situazione è l'opposto della precedente. Abbiamo chiuso un blocco av