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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
prog:
Хороший пример - оборачиваем вызов RemoveUnit своей оберткой и делаем какие-то действия перед тем как вызвать настоящий RemoveUnit.
Т.е. раньше этого нельзя было сделать? (до LUA)
7
Extremator, как я понял, там фишка в том, что можно переопределять реализацию в любой момент. Это как если бы у нас была переменная типа code, а в любой момент мы могли бы, например, сделать так:
code Fn
...
Fn = function()
	print(111)
end
27
GetLocalPlayer, я вот тоже не знаю Lua, ничего кроме jass не изучал. Но интересно)
30
Steal nerves, так изучайте, я вот наработочки для этого пилю))
И как говорилось выше, луа много где используется, так что навык может пригодиться.
7
NazarPunk, и да, и нет. Я имею в виду что-то вроде Action в шарпе, т.е. хранение функции в переменной, с возможностью переопределить ее.
NazarPunk, извиняюсь за оффтоп, конечно, но у меня самого уже много вопросов к построению скриптов на Lua (именно к скриптам, а не к самому языку), а статей еще не предвидится =(
26
PornoMishka:
Это как если бы у нас была переменная типа code, а в любой момент мы могли бы ...
Так есть же тип code, которому можно задавать разные значение, не?
30
Я имею в виду что-то вроде Action в шарпе
В шарпе статическая типизация и посему там нужен этот тип. А в lua всё является объектами, которые можно свободно переопределять и возвращать:
local function sum(a)
    return function(b)
        return a+b
    end
end
print(sum(2)(3)) --> 5
sum = 'new value'
print(sum) --> new value
а статей еще не предвидится
Предвидятся))
30
в шарпе тоже можно переопределять)
Не знаком с шарпом, но врятли он позволит из строки сделать функцию
7
NazarPunk, да, из строки никак, конечно.
Всем спасибо, убедили, что все хорошо.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.