如何在表格内部使用值(Lua语言)?

时间:2013-12-27 01:29:32

标签: lua

我有一个像这样的lua表:

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

我的目的是将sizeB设置为field.sizeA的值,但上面的代码不起作用。在这种情况下,field.sizeB为零。

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

1 个答案:

答案 0 :(得分:1)

你可以在表中使用init函数并调用:

local defaultSize = 14
local field = {
    init = function (self, size) 
        self.sizeA = size or defaultSize -- size only if given, otherwise defaultSize
        self.sizeB = self.sizeA
    end
}

field:init() -- implicit "self" arg is "field", defaultSize will be used
field:init(16) -- size will be 16 rather than 14
print(field.sizeB) -- prints 14

这具有将表实例的所有初始化聚合在一个地方的明显优势,一旦逻辑变得更复杂,就可以有条件等。你不必将init()作为表的成员,但保持依赖关系明显并且紧密结合总是一个好主意。