韭菜脚本 2

韭菜脚本 2

LeekScript 2(原LeekScript 1.1)是Leek Wars语言LeekScript的第二个版本,于2021年2月28日发布。旨在清理语言,进行修正并添加面向编程对象。

## 推介会

由于对语言的工作方式进行了深度修改,因此这是一个没有向后兼容性的版本,由用户在编辑器中手动激活。

第 2 版是迈向 2016 年宣布的未来版本的一步。因此,第 2 版中包含许多计划中的功能,使语言逐步升级,这些功能对编写复杂的 AI 非常有利。

这里有一个专门的迁移帮助页面:LeekScript 1 to 2 Migration

新品上架

面向对象编程

添加了面向对象的编程:类和对象。有关此添加的所有文档,请参阅 类和对象 页面。

关键字 new、class、extends、static、public、 protected, private, implements, interface, constructor, this , superinstanceof 为 OOP 保留,因此不再可用于变量或函数名称。

通过引用传递

非原始值,即数组和对象默认通过引用传递。原始值(数字、布尔值、字符串)总是被复制。

@ 语法不再使用,因此在任何地方都被弃用。在 LeekScript 2 中不可能创建对原始值的引用。

表格中的引用

能够在数组(和对象)中添加引用,允许以合理的成本创建复杂和/或递归结构。

在 1 中难以实现而在 2 中非常容易的数据结构示例:

###克隆()函数 添加了一个 clone(value, [level]) 函数来精确克隆一个值:

多个错误

编辑器中返回了几个语义错误,而不是一个(在 LS 1 中也可用)。

![](/image/encyclopedia/multiple_errors_2.png)

![](/image/encyclopedia/multiple_errors_1.png)

完整的调用栈

完整的调用堆栈显示在每个错误下方,而不是之前的一行(在 LS 1 中也可用)。

![](/image/encyclopedia/stacktrace.png)

不需要分号

但是当然总是可以使用它。 (也适用于 LS 1)

RAM 大小限制已删除

删除了数组大小限制,操作成本足以限制它们的使用。

##修复

数组过滤器

修复了 arrayFilter:数组被正确重新索引而不留下空值。

### 链 ”\\\\” 修复了转义字符串 "\\" 的问题,该字符串正确显示单个 \\ 而不是两个。

全局声明

修复跨多个文件的全局声明。

运算符 ^=

修复了 ^= 运算符成为二进制 OR 而不是幂的问题。

随机播放功能

shuffle 函数考虑了连接到战斗种子的随机数生成器,因此对于同一种子是确定性的。它可能会导致同一种子产生的两场战斗之间的差异,从而影响测试。