首页 > 解决方案 > 引用变量的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 作为结果?

标签: luareference

解决方案


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

推荐阅读