如何在表格中使用自身的值(Lua语言)?

我有一个 Lua 表格,如下所示:

local defaultSize = 14
local field = {
    sizeA = defaultSize,
    sizeB = sizeA,
}

我的意图是将 sizeB 的值设置为 field.sizeA 的值,但是上面的代码无法工作。在这种情况下,field.sizeB 的值为 nil。

如何直接在表格定义中将 sizeB 设置为 sizeA 的值?

点赞
用户869951
用户869951

你可以在表格中创建一个 init 函数并调用它:

local defaultSize = 14
local field = {
    init = function (self, size)
        self.sizeA = size or defaultSize -- 如果提供了 size 则使用,否则使用默认值 defaultSize
        self.sizeB = self.sizeA
    end
}

field:init() -- 隐含的 "self" 参数是 "field",将使用默认值 defaultSize
field:init(16) -- 将 size 设置为 16 而不是 14
print(field.sizeB) -- 输出 14

这样做的明显优点是将实例化表格的所有初始化聚合到一个地方,可以加入条件逻辑等等一旦逻辑变得更加复杂。您不必将 init() 作为表格的成员,但将依赖项放在明显和靠近的位置总是一个好主意。

2013-12-27 17:22:42