Flo*_*ian 10 lua properties object
有没有办法获得对象的所有非零参数/属性?我发现了这个:getmetadata(self.xxxx)我正在寻找类似的东西:getalldata(self).
我目前正在开展一个涉及lua的项目.不幸的是,没有完整的参考,我必须使用预编译的东西.
我希望你能理解我想说的话.
kik*_*ito 10
我将假设当你提到"对象"时,你的意思是"具有__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
Run Code Online (Sandbox Code Playgroud)
但请记住,如果你的任何__indexes是一个函数,就没有办法获得所有的属性; 至少不是来自Lua.
| 归档时间: |
|
| 查看次数: |
20312 次 |
| 最近记录: |