Вопрос примитивный, но все же. Что такого революционного вносит Lua в скриптинг, чего просто невозможно было достичь без него. Из того, что я заметил, анонимные методы, нативные списки и полиморфизм выглядят очень круто. Есть ли что-то еще?

Кложуры и передача данных с их помощью в нативные каллбеки от форгрупа и таймеров через анонимные функции.
Динамическая природа языка, позволяющая в любой момент времени заменить любую функцию чем-то другим. Хороший пример - оборачиваем вызов RemoveUnit своей оберткой и делаем какие-то действия перед тем как вызвать настоящий RemoveUnit.
Своеобразное но рабочее ООП.
Таблицы которые одновременно и массив и хештаблица и ассоциативный массив и при этом очень быстро работают.
Передача и хранение функций в параметрах и переменных.
Передача массивов в параметрах.
Метатаблицы и метаметоды, позволяющие переопределять поведение таблиц в разных ситуациях - добавление и получение элементов, различные операторы, вся эта фигня. Пример - можно запилить "класс" вектор и пользоваться векторной математикой без костылей, переопределив для векторов операторы сложения, вычитания, умножения и так далее.

Вобще, давно пора завести статью на эту тему и собирать там все мелкие и большие фишечки и возможности Lua в сравнении с JASS.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
7
Что в этом нового то? Обычное ООП.
Настоящий полиморфизм не существовал на c\vJASS, так что это совсем не обычное нововведение)
NazarPunk:
Что вы подразумеваете под форвардингом?
Например, то, что мы не можем использовать экземпляр структуры B в структуре A, т.к. та объявлена ниже, и интерпретатор еще не знает о ее существовании. В какой из статей это называлось именно так)
30
PornoMishka, интерпретатор двупроходный.
local function test()
	print('test')
end
test() --> test
Таким же образом можно рекурсию делать)
7
NazarPunk, это очень приятная новость, спасибо! Стало быть, даже Wurst не даст всего того, что у нас есть с 1.31.
30
Стало быть, даже Wurst не даст всего того, что у нас есть с 1.31
На данный момент да, но если создатели Wurst сделают интерпретацию на lua, то импорт пакетов из сети будет киллер фичей)
15
На данный момент да, но если создатели Wurst сделают интерпретацию на lua, то импорт пакетов из сети будет киллер фичей)
У них уже есть форк компилятора из Wurst в Lua, но какого-то реального смысла я в этом не вижу.
30
У них уже есть форк компилятора из Wurst в Lua, но какого-то реального смысла я в этом не вижу.
Я тоже. Притом я люблю публиковать наработки и посему буду сидеть на стандартном редакторе.
15
Не совсем в тему, но одно из самых существенных отличий - востребованность Lua где-то кроме самого Wc3. JASS дает намного меньше практического опыта и знаний чем боли в одном месте, в то время как Lua воздает по заслугам, поскольку используется как встраиваемый язык во многих других играх, движках, приложениях и пр, позволяя практиковать многие аспекты современного программирования. Lua позволяет расти там, где JASS упирается в потолок.
30
JASS дает намного меньше практического опыта
Мне JASS поднял навык костылеписания на заоблачный уровень)
26
prog:
Хороший пример - оборачиваем вызов RemoveUnit своей оберткой и делаем какие-то действия перед тем как вызвать настоящий RemoveUnit.
Т.е. раньше этого нельзя было сделать? (до LUA)
7
Extremator, как я понял, там фишка в том, что можно переопределять реализацию в любой момент. Это как если бы у нас была переменная типа code, а в любой момент мы могли бы, например, сделать так:
code Fn
...
Fn = function()
	print(111)
end
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.