我正在尝试将浮点向量分配给Lua的全局变量。
首先,当我将向量分配给已经输入表格的变量时,我的代码可以正常工作。
但是,当我将向量分配给非表变量时,它崩溃了。 (例如nil,数字,字符串)
这是我的代码。
// get global table
lua_getglobal(L, "mytab");
// if it is table, clear table
if(lua_istable(L, -1)) {
lua_pushvalue(L, -1);
lua_pushnil(L);
while (lua_next(L, -2)) {
lua_pop(L, 1);
lua_pushvalue(L, -1);
lua_pushnil(L);
lua_settable(L, -4);
}
lua_pop(L, 1);
}
// set table
vector<float> vec = {1,2,3,4,5};
for (int i=0; i<vec.size(); ++i) {
lua_pushinteger(L, i+1);
lua_pushnumber(L, vec[i]);
lua_settable(L, -3);
}
lua_pop(L, 1);
如果全局变量mytab
设置为nil
,number
或string
,则在Lua中调用它会导致崩溃。
我该如何解决?谢谢!
答案 0 :(得分:1)
您似乎想为全局变量mytab
设置一个新表。因此,只需忘记第一部分并做:
// set table
lua_newtable(L);
vector<float> vec = {1,2,3,4,5};
for (int i=0; i<vec.size(); ++i) {
lua_pushinteger(L, i+1);
lua_pushnumber(L, vec[i]);
lua_settable(L, -3);
}
lua_setglobal(L, "mytab");