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

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

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

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

Вобще, давно пора завести статью на эту тему и собирать там все мелкие и большие фишечки и возможности Lua в сравнении с JASS.
Принятый ответ
7
Bergi_Bear, меня поразила возможность хранить, во-первых, объекты разных типов вместе, во-вторых, не думать о размере\индексе массива. Это то, к чему так легко привыкаешь в нормальных язык, и что кажется каким-то сюром в варике)
NazarPunk, я очень поверхностно знаком с языком. Просто одно дело предоставить немного иной синтаксис (как в cJASS) и реализовывать что-то исключительно препроцессорами, но совсем другое - вносить новые парадигмы. И вот это я и хотел уточнить. Например, что с форвардингом?
prog, спасибо, это правда интересно. Пока что именно в ООП вижу самую большую пользу.
30
Вобще, давно пора завести статью на эту тему и собирать там все мелкие и большие фишечки и возможности Lua в сравнении с JASS.
Нужно просто забыть JASS как страшный сон и кодить как белые люди)
PornoMishka:
но совсем другое - вносить новые парадигмы
Что в этом нового то? Обычное ООП.
PornoMishka:
Например, что с форвардингом?
Что вы подразумеваете под форвардингом?
7
Что в этом нового то? Обычное ООП.
Настоящий полиморфизм не существовал на c\vJASS, так что это совсем не обычное нововведение)
NazarPunk:
Что вы подразумеваете под форвардингом?
Например, то, что мы не можем использовать экземпляр структуры B в структуре A, т.к. та объявлена ниже, и интерпретатор еще не знает о ее существовании. В какой из статей это называлось именно так)
30
PornoMishka, интерпретатор двупроходный.
local function test()
	print('test')
end
test() --> test
Таким же образом можно рекурсию делать)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.