Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.246.193] |
|
Сообщ.
#1
,
|
|
|
Приветствую.
Заинтересовался либой LuaBind. Читаю доку, разбираю примеры. И тут попался странный хлоуворлд: #include <iostream> #include <luabind/luabind.hpp> void greet() { std::cout << "hello world!\n"; } extern "C" int init(lua_State* L) { using namespace luabind; open(L); module(L) // Что это за конструкция такая? [ // def("greet", &greet) // ]; // return 0; } Код вроде бы С++, но то, что я выделил комментами ... не пойму. Что это? Собственно в этом вопрос. |
Сообщ.
#2
,
|
|
|
Цитата JoeUser @ Что это? Собственно в этом вопрос. Возможно, это доступ к массиву. Функцмя "module" возвращает указатель. Функция "def" - возвращает индекс массива. Например, int. --- Можно для начала попытаться узнать, что это за функции - module и def. |
Сообщ.
#3
,
|
|
|
Цитата ЫукпШ @ Возможно, это доступ к массиву. Да, так и есть. Сбили с толку "разнесенные" скобки |
Сообщ.
#4
,
|
|
|
Если это был просто доступ к массиву, то почему возвращаемое значение никак не используется? Думаю, что module(L) возвращает экземпляр некого класса переопределённым оператором [], который и вызывает функцию greet.
|
Сообщ.
#5
,
|
|
|
Цитата JoeUser @ Подозреваю, module возвращает массив дескрипторов подгруженных модули, а def получает индекс модуля в этом массиве по его имени (может ещё и подгружает его, если надо). Возможно, что это инициализация модуля 'greep'. Добавлено Но, по-моему, LuaBind это даже не C++, а чистый C. Добавлено Хотя, может быть, это C++-обёртка над C-библиотекой Lua. |
Сообщ.
#6
,
|
|
|
Цитата amk @ Подозреваю, module возвращает массив дескрипторов подгруженных модули, а def получает индекс модуля в этом массиве по его имени (может ещё и подгружает его, если надо). Возможно, что это инициализация модуля 'greep'. module() возвращает класс, у которого переопределён оператор [], в котором добавляются элементы |
Сообщ.
#7
,
|
|
|
Цитата Олег М @ module() возвращает класс, у которого переопределён оператор [], в котором добавляются элементы Именно. Цитата amk @ Хотя, может быть, это C++-обёртка над C-библиотекой Lua. Именно. |