1

luaのテーブルは次のように定義されています

tab = {"Sunday", 14.5, "Tuesday", "Wednesday",
        63, -92, "Saturday", "Saturday", 111}

Lua が ac 関数を呼び出し、タブ テーブルがパラメーターとして設定されている場合、この 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;
}

ルアコード

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」に設定されているはずです

4

1 に答える 1

2

lua_replaceテーブルではなく、スタックで動作します。lua_settableまたはを使用しlua_setfieldます。

于 2013-09-19T18:39:00.637 に答える