我希望我的C应用程序的用户能够提供匿名功能来执行小块工作.
像这样的小碎片是理想的.
function(arg) return arg*5 end
// 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,1,0 ); } push_lua_function_from_string(L,"function(arg) return arg*5 end" ); int reg_index = luaL_ref(L,LUA_REGISTRY_INDEX);
有更好的解决方案吗?