了解编译错误

了解编译错误

> LeekScript 教程

你像一个有福的人一样编写你的 AI。线条滚动,非常符合逻辑的变量和函数的名称,例如 sfatyu_2 一个接一个,生活是美好的...... 突然 !按下“保存”键,编译器将检查您的代码。它强烈地支撑着你的目光…… 这是戏剧!一条(或多条!)大红线出现在你的编辑器底部,这些奇怪而深奥的魔法公式是什么意思?

本指南将向您揭示真相,以便您也能成为知者。

这里应该是语句结束

教学结束? 是的,就是每行末尾的“;”。此消息指示其中一个数字丢失的行。 不过要小心!指示的线通常是被控者之前或之后的线。

!缺少一个;

这里第 18 行末尾缺少一个“;”,消息告诉我们 useWeapon 之前的行没有分号!

修复:moveToward(enemy);

文件意外结束

更阴险!和上一个一样的错误,但是这次是你的 AI 的最后一行没有分号。 !unexp EoF

修复:useWeapon(enemy);

这也可能是由于未关闭的 String: !EoF 2

修正:说(“我赢了!”);

未知变量或函数

谁忘了声明他们的变量?返回 Variables 教程和 Functions 教程可能很有用。

!var 或 func 未知

在这里,没有声明 enemy 变量。您必须首先使用 var 关键字创建它。 修复:var enemy = getNearestEnemy();

那么对于这个呢? !ex 未知函数

好吧,作者只是一只带键盘的猴子,并没有看到他使用了 getNeerest(不存在)而不是上面声明的 getNearest

这个变量名不可用

您不能重新声明与已声明变量同名的变量。

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

更正(丑陋):var moi2 = 1 更好的解决方法是使用真正匹配变量角色的名称。

警告:由于全局变量的名称,也会出现此错误。

如果你使用逗号而不是受人尊敬的分号,这个错误也会落在你身上: ![](https://imgur.com/cCpqtxS.png)

修复:var enemy = getNearestEnemy();

这是由于内联变量声明: var variable1 = 1, variable2 = 2; 是完全有效的语法(参见 Variables)。

该函数名不可用

与前面的错误一样,您不能重复使用已经使用过的函数名称。

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

更正(非常难看):function getNearest2() {

不能使用这个参数名

所以我们试图使用全局变量的名称作为参数名称,是吧?你知道如果你和我一个不太友好的同事吵架会让你付出什么代价吗?

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

更正:

需要右括号

如错误消息所示,指示的行缺少括号。 !如果错误

这里代码的第 19 行应该是 if (not isAlive(enemy)) {

这里需要一个值

函数调用未关闭??这就是你得到的! !期望值

修复moveToward(enemy);

参数数量不正确

参数?科萨科?快速回顾 Functions 教程是为了!

!nb 参数不正确

在这里,moveToward 函数接受 1 到 2 个参数,我们给它 0。显然编译器打了我们的手指。 修复 moveToward(enemy);moveToward(enemy, mp); 和 mp 一个数字。

请注意,如果您为函数提供太多参数(例如moveToward(enemy, mp, thing);),您将得到相同的错误。

并非所有区块都已关闭

什么是块? 嗯,它是一段被 { } 包围的代码。在这里,我们用 { 打开了一个块,但没有关闭它。 !块未关闭

这里的 }if 结束后丢失了。因此,编译器指示当前块的末尾(此处为文件末尾)以指示我们忘记关闭所有块。 更正:

没有要关闭的块

这种情况与前一种情况相反。我们关闭了一个块 av