Заинтересовался либой LuaBind. Читаю доку, разбираю примеры. И тут попался странный хлоуворлд:
#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 будет, конечно, более богатой из-за использования перегруженных операторов, но использованный тут синтаксис - банален.
Комментариев нет:
Отправить комментарий