2

如何删除使用foo创建的元表luaL_newmetatable( L, "foo" );,以便luaL_getmetatable( L, "foo" );再次推送 NIL 值?

4

1 回答 1

4

无论您出于何种原因必须删除元表,都是有可能的。luaL_newmetatable(L, "foo")创建一个表,该表使用键 存储在 Lua 注册表中"foo"

要删除表,只需将"foo"注册表中的字段设置为nil. C中的代码:

lua_pushnil(L);
lua_setfield(L, LUA_REGISTRYINDEX, "foo");

Lua 中的等效代码:

debug.getregistry()["foo"] = nil
于 2011-02-17T19:54:26.143 回答