lua中的表定义如下
tab = {"Sunday", 14.5, "Tuesday", "Wednesday",
63, -92, "Saturday", "Saturday", 111}
Lua调用一个c函数,并将tab表设置为param,这个c函数应该在更新后返回表
new_tab_result = call_c_function(..,tab)
我想修改所有字符串值并将它们设置为“DEFAULT”,然后返回 表后修改为lua。
C代码
while (lua_next(L, 6) != 0)
{
...
else if(lua_isstring(L, -1))
{
lua_pushstring(L, "DEFAULT");
lua_replace(L, -2);
k = luaL_checkstring(L, -1);
log("%s",k) // "DEFAULT"
}
...
lua_pop(L, 1);
}
return 1;
}
Lua Code
for key,value in pairs(new_tab_result) do
DebugLog(key.."-"..value)
end
结果
1-Sunday
2-14.5
3-Tuesday
4-Wednesday
5-63
6--92
7-Saturday
8-Saturday
9-111
字符串值仍然具有初始值,而它应该默认为“DEFAULT”
答案 0 :(得分:2)
lua_replace
在堆栈上工作,而不是在桌面上工作。使用lua_settable
或lua_setfield
。