Lua表继续是空的,即使我给它的东西

时间:2014-06-14 15:51:42

标签: lua lua-table

在我的Lua驱动的游戏中,我正在尝试创建一个资源管理器来查看已创建的所有实例。我在我的DataModel" class"中创建了一个函数。 (因为我喜欢称之为),它会扫描物品的孩子,并将它整齐地放在桌子里。

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 形式出现。但正如你所看到的,我只是在里面设置了三件事。什么可能导致这样的事情发生?我做了一件明显不对的事吗?

print(obj.Name)行返回它应该的内容。我只是被困在' dmyself'。

1 个答案:

答案 0 :(得分:1)

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

  

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

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