如果我使用同一个密钥两次推送用户数据会怎样?
What happens if I push userdata twice using the same key?
我想知道如果我使用同一个密钥将 lightuserdata 推入注册表两次会发生什么。
我的代码:
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
) 是否会被新指针 (y
) 替换?
已添加: 有没有办法检查当前注册的密钥列表?
Lua 注册表是一个普通的 Lua table。您的代码相当于
registry.my_data = x
registry.my_data = y
所以,是的,在这两行之后 registry.my_data
的值就是 y
的值。
我想知道如果我使用同一个密钥将 lightuserdata 推入注册表两次会发生什么。
我的代码:
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
) 是否会被新指针 (y
) 替换?
已添加: 有没有办法检查当前注册的密钥列表?
Lua 注册表是一个普通的 Lua table。您的代码相当于
registry.my_data = x
registry.my_data = y
所以,是的,在这两行之后 registry.my_data
的值就是 y
的值。