Lua

10.12.2009 @ 03:25

Всё руки не доходили сесть и пописать на Lua. И вчера-таки уселся. Язык понравился. Никаких тебе статических (Boo — симпатишный C#) или жёстких типов (Python). Встроенных функций минимум, да ещё и с делением на модули: string, os и несколько в глобальном пространстве имён. Есть модули, которые нужно подключать. Вот с ними, кстати, имеет место геморрой. Например, есть модуль ex, в нём функция sleep(). Можно вызвать os.sleep(), а можно и ex.sleep(). При этом вызвать os.sleep() нельзя до подключения ex. Яващенихуянепонял.

Или модуль alien для подключения динамических библиотек. Понятно, что Lua язык в первую очередь для интеграции в Си, обратного-то всё-равно хотца и, вроде как, имеется. Но с косяками.

Изначально хотел подгружать библиотеку стандартной функцией package.loadlib(), но выгружаемым из библиотеки функциям нельзя задавать значения. И программа дохнет. Пришлось использовать alien, но и тут не всё хорошо. До получения функции, даже если функция не имеет параметров, приходится приписывать ей типы значений: table.FuncFromLib:types(таблица типов). То есть в функции, где нет параметров пишем table.FuncFromLib:types({’int’}) и только после вызываем table.FuncFromLib(nil). Это я такой через жопу?

Ну и похуй. Зато всё остальное меня порадовало.

В результате минут за двадцать родил перехватчик пульта тюнера Beholder для Light Alloy. Точнее, подобная хуйня уже была написана на питоне, но от туда скопировал только список констант пульта и программы. Также нарыл методом тыка константу sound_next (код 405) для переключения звуковых дорожек. В документации к Light Alloy про неё почему-то забыли.

В общем с какой стороны не глянь — гений.

# / комментарии (0) / Lua

RSS / lexa@cutenews.ru / 165280011 Blogowar.ru - битва блогов Блоговар - война блогов

Работает на Blueberry. Каждый посчитан "Спеcтой".