Comprender los errores de compilación

Comprender los errores de compilación

> Tutorial de LeekScript

Codificas tu IA como un bendito. Las líneas se desplazan y los nombres de variables y funciones muy lógicas, como sfatyu_2 se suceden, la vida es buena... Repentinamente ! Se presiona la tecla "guardar" y el compilador verifica su código. Sostiene tu mirada, intensamente... ¡Y aquí está el drama! Una (¡o más!) grandes líneas rojas aparecen en la parte inferior de tu editor, ¿qué pueden significar estas extrañas y esotéricas fórmulas mágicas?

Esta guía les revelará la verdad para que ustedes también puedan convertirse en conocedores.

Se esperaba un final de declaración aquí

¿Un final de instrucción? Sí, es el ";" al final de cada línea. Este mensaje indica una línea en la que falta una de estas cifras. ¡Pero ten cuidado! la línea indicada es en general la línea que precede o sigue a la incriminada.

!Falta uno;

Aquí falta un ";" al final de la línea 18, y el mensaje nos dice que la línea anterior a useWeapon no tiene su punto y coma.

Arreglo: moveToward(enemy);

Inesperado final de archivo

¡Más insidioso! Es el mismo error que el anterior, pero esta vez es la última línea de tu IA que no tiene punto y coma. !EoF no esperado

Corrección: useWeapon(enemy);

Esto también puede deberse a una String no cerrada: !EoF 2

Corrección: say("¡Gané!");

Variable o función desconocida

¿Quién olvidó declarar su variable? Un breve regreso al tutorial sobre Variables y el tutorial sobre Funciones puede resultar útil.

!var o función desconocida

Aquí, la variable enemigo no se declara. Primero debe crearlo con la palabra clave var. Corrección: var enemigo = getNearestEnemy();

¿Y para este entonces? !ex función desconocida

Bueno, el autor es solo un mono con un teclado, y no vio que usó getNeerest (que no existe) en lugar de getNearest, declarado justo arriba.

Este nombre de variable no está disponible

No puede volver a declarar una variable con el mismo nombre de una variable ya declarada.

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

Corrección (feo): var moi2 = 1 Una mejor solución sería usar nombres que realmente coincidan con el rol de sus variables.

Advertencia: Este error también puede aparecer por el nombre de una variable global.

Este error también caerá sobre ti si usas una coma en lugar del venerado punto y coma: ![](https://imgur.com/cCpqtxS.png)

Corrección: var enemigo = getNearestEnemy();

Esto se debe a la declaración de variables en línea: var variable1 = 1, variable2 = 2; es una sintaxis perfectamente válida (ver Variables).

El nombre de esta función no está disponible

Al igual que el error anterior, no puede reutilizar un nombre de función que ya se ha utilizado.

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

Corrección (muy fea): function getNearest2() {

No se puede usar este nombre de parámetro

Entonces, estamos tratando de usar el nombre de una variable global como nombre de parámetro, ¿no? ¿Sabes lo que te puede costar si te peleas con uno de mis colegas menos amigables?

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

Corrección:

Paréntesis de cierre esperado

Como indica el mensaje de error, a la línea indicada le falta un paréntesis. !Error si

Aquí, la línea 19 del código debería ser if (not isAlive(enemy)) {

Aquí se esperaba un valor

¿Una llamada de función no cerrada? ¡Esto es lo que obtienes! !valor esperado

Arreglar moveToward(enemy);

Número incorrecto de parámetros

¿Parámetros? kezako? ¡Se necesita una revisión rápida del tutorial Functions!

!Nota: parámetro incorrecto

Aquí, la función moveToward acepta de 1 a 2 parámetros, y le damos 0. Obviamente el compilador nos golpea los dedos. Corrige moveToward(enemy); o moveToward(enemy, mp); con mp un número.

Tenga en cuenta que obtendrá el mismo error si proporciona demasiados parámetros a una función (Eg: moveToward(enemy, mp, thing);).

No se han cerrado todos los bloques

¿Qué es un bloque? Bueno, es una sección de código rodeada por { }. Aquí, abrimos un bloque con { sin cerrarlo. !bloques no cerrados

Aquí falta } después del final de if. Por lo tanto, el compilador indica el final del bloque actual (aquí el final del archivo) para indicar que olvidamos cerrar todos los bloques. Corrección:

No hay bloques para cerrar

Esta situación es la inversa de la anterior. Cerramos una cuadra de av