Можно ли добавить метод метки к данным пользователя с помощью C API? - PullRequest
0 голосов
/ 02 июня 2019

В Lua 5.x C API можно добавлять метаданные и, следовательно, метаметоды в данные пользователя.

Я пытаюсь реализовать его в Lua 4.0 (я знаю, что он старый, но он работает на устройстве) с помощью следующего кода, но он не работает:

/* push the tagmethod (cfunction getShare) */    
lua_pushcfunction(state, getShare);
/* set the userdata tag 'tag' gettable tagmethod */
lua_settagmethod(state, tag, "gettable");
/* push the userdata before returning the call from cfunction */
lua_pushusertag(state, ptr, tag);

В Lua: local userdata1 = myFn () - <- возвращает данные пользователя </p>

local userdata11 = userdata1  -- <-- doesn't call getShare

Я ожидал, что метод будет вызван. Я попытался использовать тэг «index» или другой, но безуспешно.

Конечно, у меня все еще есть возможность обернуть данные пользователя в таблицу и добавить метки в таблицу, но тогда они будут изменены пользователем, и это то, чего я не хочу.

Спасибо

...