Lua变量引用问题

我在main.lua中写了以下代码:

local Vector3 = require "vector3"

local A = {
    v = Vector3:new(16,16,16)
}

b = Vector3:new(A.v.x + 2, A.v.y + 3, A.v.z + 4)
print(A.v.x)

在Vector3.lua中写了以下代码:

local Vector3 = {
    x,
    y,
    z
}

function Vector3:new(x,y,z)
    o = {}
    setmetatable(o,self)
    self.__index = self

    self.x = x
    self.y = y
    self.z = z

    return o
end

return Vector3

为什么输出的是18而不是16?我猜是和变量引用有关。如何才能得到16的结果?

点赞
用户107090
用户107090

Vector3:new 正在设置 Vector3 的字段,而不是创建的对象中的字段。尝试使用以下代码:

function Vector3:new(x,y,z)
    local o = {}
    setmetatable(o,self)
    self.__index = self
    o.x = x
    o.y = y
    o.z = z
    return o
end
2019-04-04 16:21:29