Я хочу, чтобы пользователи моего приложения на C ++ могли предоставлять анонимные функции для выполнения небольших кусков работы.
Небольшие фрагменты, подобные этому, были бы идеальными.я хотел бы иметь возможность написать что-то столь же простое для моего C-кода,
// Push the function onto the lua stack
lua_xxx(L, "function(arg) return arg*5 end" )
// Store it away for later
int reg_index = luaL_ref(L, LUA_REGISTRY_INDEX);
Однако я не думаю, что lua_loadstring сделает «правильную вещь».мне кажется ужасным хаком?
void push_lua_function_from_string( lua_State * L, std::string code )
{
// Wrap our string so that we can get something useful for luaL_loadstring
std::string wrapped_code = "return "+code;
luaL_loadstring(L, wrapped_code.c_str());
lua_pcall( L, 0, 1, 0 );
}
push_lua_function_from_string(L, "function(arg) return arg*5 end" );
int reg_index = luaL_ref(L, LUA_REGISTRY_INDEX);
Есть ли лучшее решение?