Что произойдет, если я дважды нажму на данные пользователя, используя одну и ту же клавишу?

Я хотел бы знать, что произойдет, если я вставлю 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)?

ДОБАВЛЕНО: И есть ли способ проверить список ключей, которые в данный момент зарегистрированы?

3

Решение

Реестр Lua — это обычная таблица Lua. Ваш код эквивалентен

registry.my_data = x
registry.my_data = y

Итак, да, после этих двух строк значение registry.my_data это значение y,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]