lua_setfield 有其他替代方法吗?(Lua C/C++)

我正在使用 lua C 函数,但我无法使用 lua_setfield。我需要能够执行基本上与 lua_setfield 相同的操作的东西。除了 lua_setfield 之外,我可以使用任何其他 lua 函数。有什么帮助吗?

点赞
用户107090
用户107090

如果 i 是正数(即绝对值),那么 lua_setfield(L, i, k) 等同于

lua_pushstring(L, k);
lua_insert(L, -2);
lua_settable(L, i);

如果 i 是负数(即相对值),那么 lua_setfield(L, i, k) 等同于

lua_pushstring(L, k);
lua_insert(L, -2);
lua_settable(L, i - 1);

下面的代码结合了这两个:

lua_pushstring(L, k);
lua_insert(L, -2);
lua_settable(L, i - (i < 0));
2018-01-03 18:00:09