我想知道如果我使用相同的密钥两次将lightuserdata推送到注册表中会发生什么情况。
我的代码:
n
是否会将先前推入的指针(MyData *x, *y; //let's say these are valid pointers
lua_pushstring(L, "my_data");
lua_pushlightuserdata(L, static_cast<void *>(x));
lua_settable(L, LUA_REGISTRYINDEX);
lua_pushstring(L, "my_data");
lua_pushlightuserdata(L, static_cast<void *>(y));
lua_settable(L, LUA_REGISTRYINDEX);
lua_pushstring(L, "my_data");
lua_gettable(L, LUA_REGISTRYINDEX);
MyData *data = static_cast<MyData *>(lua_touserdata(L, -1));
//would the data be x or y?
)替换为新的指针(x
)?
已添加:是否可以检查当前已注册的密钥列表?
答案 0 :(得分:3)
Lua注册表是普通的Lua表。您的代码等同于
registry.my_data = x
registry.my_data = y
是的,在这两行之后,registry.my_data
的值就是y
的值。