Lua,表转换为数字?

时间:2014-08-08 23:18:07

标签: syntax lua lua-table

我只是在一起添加数字,但它仍然是错误的。我使用type()来检查vector是否是一个表,它总是说它是,但它继续说它是一个数字。

任何人都可以告诉我为什么会发生这种情况并找到解决方法(变量vector是一个vector3对象)?非常感谢任何帮助。

的Vector3:

function new(x, y, z)
  return setmetatable({x = x, y = y, z = z}, meta) --{} has public variables
end

此处的所有Vector3文件:http://pastebin.com/csBmJG36

ERROR:

  

尝试索引本地'vector'(数字值)

SCRIPT:

function translate(object, x, y, z)
    for i, v in pairs(object) do
        if (i == "Vertices") then
            for _, q in pairs(v) do
                for l, vector in pairs(q) do
                    vector.x = vector.x + x;
                    vector.y = vector.y + y;
                    vector.z = vector.z + z;
                end
            end
        end
    end
end

1 个答案:

答案 0 :(得分:2)

让我们通过删除loop-switch反模式来重构你的代码:

function translate(object, x, y, z)
    for _, q in pairs(object.Vertices) do
        for l, vector in pairs(q) do
            -- Test the type of vector here...
            vector.x = vector.x + x;
            vector.y = vector.y + y;
            vector.z = vector.z + z;
        end
    end
end

因此,访问object.Vertices[_][l].x时会发生错误。

这将是一个奇怪的顶点列表,它包含顶点列表列表。