ЛукСкрипт 2

ЛикСкрипт 2

LeekScript 2 (ранее LeekScript 1.1) — это вторая версия LeekScript, языка Leek Wars, выпущенная 28 февраля 2021 года. Она направлена на очистку языка, внесение исправлений и добавление объекта ориентированного программирования.

Презентация

Поскольку в способ работы языка внесены глубокие изменения, это версия без обратной совместимости, которая активируется вручную пользователем в редакторе.

Версия 2 — это шаг к будущей версии, анонсированной в 2016 году. Таким образом, многие запланированные функции присутствуют в версии 2, что позволяет постепенно совершенствовать язык, и эти функции очень полезны для кодирования сложного ИИ.

Специальная страница справки по миграции доступна здесь: Миграция LeekScript с 1 на 2.

Новые поступления

Объектно-ориентированного программирования

Добавлено объектно-ориентированное программирование: классы и объекты. См. страницу Классы и объекты для получения всей документации по этому дополнению.

Ключевые слова новый, класс, расширяет, статический, общедоступный, защищенный, частный, реализует, интерфейс, конструктор, это , super и instanceof зарезервированы для ООП и поэтому больше не доступны для имен переменных или функций.

Передача по ссылке

Непримитивные значения, т.е. массивы и объекты, по умолчанию передаются по ссылке. Примитивные значения (число, логическое значение, строка) всегда копируются.

Синтаксис @ больше не используется и поэтому не рекомендуется везде. В LeekScript 2 невозможно создать ссылки на примитивное значение.

Ссылки в таблицах

Возможность добавления ссылок в массивы (и объекты), что позволяет создавать сложные и/или рекурсивные структуры по разумной цене.

Примеры структур данных, которые сложно получить в 1 и очень легко во 2:

функция клонирования()

Добавлена функция clone(value, [level]) для точного клонирования значения:

Несколько ошибок

В редакторе возвращено несколько семантических ошибок вместо одной (также доступно в LS 1).

![](/image/энциклопедия/multiple_errors_2.png)

![](/image/энциклопедия/multiple_errors_1.png)

Полный стек вызовов

Полный стек вызовов отображается под каждой ошибкой, а не только одной строкой перед ней (также доступно в LS 1).

![](/изображение/энциклопедия/stacktrace.png)

Точка с запятой не требуется

Но, конечно, всегда можно им воспользоваться. (также доступно в LS 1)

Ограничение на размер оперативной памяти снято

Ограничение на размер массива снято, затраты на операции достаточны для ограничения их использования.

Исправления

фильтр массива

Исправлено arrayFilter: массив корректно переиндексируется, не оставляя пустых значений.

Цепь "\\\\"

Исправлено экранирование строки "\\", которая корректно отображает один \ вместо двух.

Объявление глобальных переменных

Исправление глобальных объявлений в нескольких файлах.

Оператор ^=

Исправлена ошибка, из-за которой оператор ^= становился двоичным ИЛИ вместо степени.

Функция перемешивания

Функция перемешивания учитывает генератор случайных чисел, подключенный к боевому начальному числу, и поэтому является детерминированным для одного и того же начального числа. Это может привести к различиям между двумя боями, сгенерированными из одного и того же семени, что повлияет на тесты.