Lua C API:删除使用luaL_newmetatable创建的元表?

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

原文链接 https://stackoverflow.com/questions/5033643

点赞
stackoverflow用户221509
stackoverflow用户221509

无论您因何原因要删除元表,都是可能的。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-17 19:54:26