是否可以使用C API向用户数据添加标记方法?

时间:2019-06-02 01:03:37

标签: lua-userdata lua-4.0

在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

我期望调用该方法。 我尝试使用“索引”标记方法或其他方法,但没有获得更多成功。

当然,我仍然可以选择将用户数据包装到表中并向表中添加标记方法,但是那样它们将可由用户修改,这是我不想要的。

谢谢

0 个答案:

没有答案