在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()-<-返回用户数据
local userdata11 = userdata1 -- <-- doesn't call getShare
我期望调用该方法。 我尝试使用“索引”标记方法或其他方法,但没有获得更多成功。
当然,我仍然可以选择将用户数据包装到表中并向表中添加标记方法,但是那样它们将可由用户修改,这是我不想要的。
谢谢