gpt4 book ai didi

reference - 如何将对表的引用添加到 userdata 对象?

转载 作者:行者123 更新时间:2023-12-02 01:11:36 26 4
gpt4 key购买 nike

我在 lua 中有一个接受用户数据对象的函数。

function Class:AttachToUserdataObject(userdataObject)
userDataObject.tableAttached = self
end

但后来,当我使用相同的用户数据对象时,我找不到它 - userdataObject.tableAttached 为 nil。我觉得我还没有完全理解用户数据对象的工作方式。

除了创建一个包含所有用户数据对象的 ID(它们具有唯一 ID)和对表的引用的全局表之外,还有什么方法可以将对象绑定(bind)到用户数据吗?

我希望尽可能保持它的优雅,但如果无法访问 C++ 代码,我想如果它能正常工作,我可以牺牲一些优雅。

最佳答案

用户数据对象没有像表这样的字段,而且 Lua 对底层 C 对象的内部结构一无所知。为了实现你想要的,你必须处理 __index__newindex 元方法。

因此,例如,当执行像 userdataObject.tableAttached = self 这样的赋值时,会触发 __newindex 元方法。在其中,您可以将值存储在元表本身(可能存在名称冲突)或另一个表中,该表本身存储在元表中。

要取回数据,您必须处理 __index 元方法。用户数据可能会有点棘手,所以如果您遇到问题,请告诉我。

关于reference - 如何将对表的引用添加到 userdata 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com