如果我使用相同的键两次推送用户数据会怎样?

时间:2018-08-06 10:12:30

标签: c++ lua lua-userdata

我想知道如果我使用相同的密钥两次将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)?

已添加:是否可以检查当前已注册的密钥列表?

1 个答案:

答案 0 :(得分:3)

Lua注册表是普通的Lua表。您的代码等同于

registry.my_data = x
registry.my_data = y

是的,在这两行之后,registry.my_data的值就是y的值。