gpt4 book ai didi

object - 如何在lua中找出对象的所有属性?

转载 作者:行者123 更新时间:2023-12-04 03:30:35 25 4
gpt4 key购买 nike

有没有办法获得所有非零参数/属性
一个对象?我找到了这个:getmetadata(self.xxxx)我正在寻找类似的东西:getalldata(self).
我目前正在从事一个涉及 lua 的项目。不幸的是,没有完整的引用资料,我必须使用预编译的东西。

我希望你能理解我想说的话。

最佳答案

我将假设当您提到“对象”时,您的意思是“带有 __index 元表指向其他表的 lua 表”。如果情况并非如此,则此答案对您没有帮助。

如果您的对象结构是由表格构成的(也就是说,所有 __indexes 都是表格),那么您可以“解析它们”以获取所有属性和继承的属性。

如果您有任何功能如 __index那你问的是不可能的;无法获得“函数返回非零值的值列表”。

在第一种情况下,代码如下所示:

function getAllData(t, prevData)
-- if prevData == nil, start empty, otherwise start with prevData
local data = prevData or {}

-- copy all the attributes from t
for k,v in pairs(t) do
data[k] = data[k] or v
end

-- get t's metatable, or exit if not existing
local mt = getmetatable(t)
if type(mt)~='table' then return data end

-- get the __index from mt, or exit if not table
local index = mt.__index
if type(index)~='table' then return data end

-- include the data from index into data, recursively, and return
return getAllData(index, data)
end

但请记住,如果您的 __index es 是一个函数,没有办法获取所有的属性;至少不是来自 Lua。

关于object - 如何在lua中找出对象的所有属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5636596/

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