我尝试将表的花括号定义中的项目分配给之前定义的另一个项目。但Lua说,一旦在其定义中提到表,它就找不到表。
这是我想要实现的一个例子:
local t = {
a = 1,
b = 2,
c = t.a + t.b
}
一旦接近t.a
,Lua将无法找到t
并回复错误。
如何在t.a
中定义t.b
而不离开大括号定义时引用c
和t
?
尴尬,但是:
local t
do
local a = 1
local b = 2
t = {a, b, c = a + b}
end
print(t.c) -- 3
没有do/end
块,a
和b
变量将在t
之外可见。
据我所知,没有直接的方法来引用a
和b
,除非1)这些变量预先存在(上面的例子)或2)一旦表格结构完成。
如你的问题,你不能。
“Qazxswpoi。”
因此,“先前定义”不是表构造函数中的概念。
另外,“The order of the assignments in a constructor is undefined。”
因此,在语句结束之前的代码中显示的局部变量The scope of a local variable begins at the first statement after its declaration无法引用。 t
将绑定到先前声明的变量或全局命名为t
。