Lua的桌子仍然空着,尽管我给了它一些东西

Lua的桌子仍然空着,尽管我给了它一些东西,lua,lua-table,Lua,Lua Table,在我的Lua游戏中,我试图创建一个浏览器来查看所有已创建的实例。我在我的数据模型“类”(我喜欢这样称呼它)中创建了一个函数,该函数将扫描项的子项,并将其整齐地放在表中 function DataModel.ObjectToTable(obj) children = {} for i,v in pairs(obj:GetChildren()) do table.insert(children, DataModel.ObjectToTable(v)) end

在我的Lua游戏中,我试图创建一个浏览器来查看所有已创建的实例。我在我的数据模型“类”(我喜欢这样称呼它)中创建了一个函数,该函数将扫描项的子项,并将其整齐地放在表中

function DataModel.ObjectToTable(obj)
    children = {}

    for i,v in pairs(obj:GetChildren()) do
        table.insert(children, DataModel.ObjectToTable(v))
    end

    print(obj.Name)

    dmyself = {}
    dmyself.Name = obj.Name
    dmyself.Object = obj
    dmyself.Children = children

    print(#dmyself)

    return dmyself
end
问题是,打印(#dmyself)显示为0。但正如你所看到的,我只是在里面设置了3个东西。什么会导致这样的事情发生?我是不是做错了什么

打印(obj.Name)行返回它应该返回的内容。我只是停留在“dmyself”上。

是Lua表的数组部分的长度;它只考虑整数键。更具体地说

表t的长度定义为任意整数索引n,使得t[n]不是nil,t[n+1]是nil;此外,如果t[1]为零,则n可以为零。对于从1到给定n的非零值的正则数组,其长度正好是其最后一个值的索引n


如果使用
,您可以看到您的表不是空的。但是由于表的数组部分没有任何内容,所以它的长度为零。

哦,我明白了。感谢您提供的信息--使用pairs确实返回了正确的结果。使用局部变量:
子变量和
dmyself
是全局变量。