Lua的初始化表

Lua的初始化表

问题描述:

在Lua中,当我创建了一个表下面的方式...Lua的初始化表

test={} 
test = { x=5 , y = test.x} 

print(test.y) 

我预计test.y将是5,其实不然。为什么?

Programming in Lua, 2nd ed.,23页,章3.6表构造

...也就是说,创建所有表等;构造函数只影响它们的初始化。 每次Lua评估构造函数时,它都会创建并初始化一个新表。 ...

因此,该表的构造{ x=5 , y = test.x }首先创建一个新的表对象,其中,在充分进行评估(!),被分配来命名test

这是或多或少在代码中发生的情况:

test = {} 
TEMP_TABLE = { x=5 , y=test.x } --> x=5, y=nil 
test = TEMP_TABLE 
+0

所以即使有Lua的语法高亮显示! :) – 2011-03-30 09:25:09

+0

谢谢你清除那个。 Lua真的很快成长起来。我的意思是,一些人的重新构思能力相当于大量文件夹中的名字相互嵌套。 – Prospero 2011-03-30 09:28:40

+0

@涂鸦,谢谢。是的,这是一个带有一些强大功能的可爱小语言。 – 2011-03-30 09:29:56

这只是因为test.x只在tat语句执行后才存在。因此,这会工作:

test={} 
test.x=5 
test.y=test.x 

所以,你做

test={x=5,y=test.x} 

你实际上更换一个新的你t={}生成的表,并采取键x的值在旧人,这是零。