使用c-api修改Lua表的值

时间:2013-09-19 18:27:16

标签: lua lua-table lua-api

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”

1 个答案:

答案 0 :(得分:2)

lua_replace在堆栈上工作,而不是在桌面上工作。使用lua_settablelua_setfield