如何将表定义中的项目分配给同一个表中的另一个项目?

问题描述 投票:0回答:2

我尝试将表的花括号定义中的项目分配给之前定义的另一个项目。但Lua说,一旦在其定义中提到表,它就找不到表。

这是我想要实现的一个例子:

local t = {
    a = 1,
    b = 2,
    c = t.a + t.b
}

一旦接近t.a,Lua将无法找到t并回复错误。

如何在t.a中定义t.b而不离开大括号定义时引用ct

lua lua-table
2个回答
3
投票

尴尬,但是:

local t
do
    local a = 1
    local b = 2

    t = {a, b, c = a + b}           
end

print(t.c) -- 3

没有do/end块,ab变量将在t之外可见。

据我所知,没有直接的方法来引用ab,除非1)这些变量预先存在(上面的例子)或2)一旦表格结构完成。


3
投票

如你的问题,你不能。

“Qazxswpoi。”

因此,“先前定义”不是表构造函数中的概念。

另外,“The order of the assignments in a constructor is undefined。”

而且,“The assignment statement first evaluates all its expressions and only then the assignments are performed”。

因此,在语句结束之前的代码中显示的局部变量The scope of a local variable begins at the first statement after its declaration无法引用。 t将绑定到先前声明的变量或全局命名为t

© www.soinside.com 2019 - 2024. All rights reserved.