如果我使用同一个密钥推送用户数据两次,会发生什么

What happens if I push userdata twice using the same key?

本文关键字:两次 什么 数据 同一个 密钥 用户数 用户 如果      更新时间:2023-10-16

我想知道如果我使用同一个键将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表。你的代码相当于

registry.my_data = x
registry.my_data = y

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