Страницы

Поиск по вопросам

четверг, 8 ноября 2018 г.

Странный синтаксис С++ кода в библиотеке LuaBind

Заинтересовался либой LuaBind. Читаю доку, разбираю примеры. И тут попался странный хлоуворлд:
#include #include
void greet() { std::cout << "hello world!
"; }
extern "C" int init(lua_State* L) { using namespace luabind;
open(L);
module(L) // Что это за конструкция такая? [ // def("greet", &greet) // ]; //
return 0; }
Код вроде бы С++, но то, что я выделил комментами ... не пойму. Что это? Собственно в этом вопрос.


Ответ

Ну вот, например, набор определений на самом что ни на есть базовом языке С (!), который позволит вам написать ту же самую конструкцию
const int L = 42; void greet(void) {} int *module(int i) { static int a[1] = { 0 }; return a; } int def(const char *c, void f(void)) { return 0; }
int main() { module(L) [ def("greet", &greet) ]; }
Что говорит о том, что данная конструкция использует самый базовый синтаксис языка и ничего необычного в ней нет.
Семантика этой конструкции в Lua будет, конечно, более богатой из-за использования перегруженных операторов, но использованный тут синтаксис - банален.

Комментариев нет:

Отправить комментарий