Lua,将表格转换为数字?

我只是简单地将数字相加,但是它一直出现错误。我使用了 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

错误:

尝试对本地变量“vector”(一个数字值)进行索引

脚本:

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
点赞
用户3204551
用户3204551

让我们通过移除循环开关反模式来重构您的代码:

function translate(object, x, y, z)
    for _, q in pairs(object.Vertices) 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

因此,错误发生在对object.Vertices[_][l].x的访问中。

那可能是一个包含顶点列表的特殊顶点列表,而不是普通的顶点列表。

2014-08-08 23:33:55