Lua的一段代码的疑问(局部表对全局表的赋值操作)

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:34:54
Aliens = {};

function Init ()
for CurrAlienIndex = 1, ALIEN_COUNT do
local CurrAlien = {};
CurrAlien.X = GetRandomNumber ( 0, 639 - ALIEN_WIDTH );
CurrAlien.Y = GetRandomNumber ( 0, 479 - ALIEN_HEIGHT );
CurrAlien.XVel = GetRandomNumber ( MIN_VEL, MAX_VEL );
CurrAlien.YVel = GetRandomNumber ( MIN_VEL, MAX_VEL );
CurrAlien.SpinDir = GetRandomNumber ( 0, 2 );
Aliens [ CurrAlienIndex ] = CurrAlien;
end
end

这段LUA代码中的"CurrAlien"是局部变量的表,每个新构造的它都被GetRandomNumber()初始,并赋给全局表"Aliens",我不明白的是:
将"CurrAlien"赋给"Aliens"实际是给了Aliens的一个对CurrAlien的引用,那么,当这个函数结束时,Aliens的值会不会因为局部表CurrAlien的销毁而被影响?为什么?谢谢!
CurrAlien是局部表变量,CurrAlien没了,而构造出的表还在吗?这样的话就是说不论在什么地方构造的表,不论是否有引用它,它都是存在的?

不会销毁,CurrAlien没了,Aliens 里面的值就是你函数里的赋值。

如果说引用,只是把原来的CurrAlien真实数据的地址赋给Aliens了。

CurrAlien是局部表变量,CurrAlien没了,而构造出的表还在吗?这样的话就是说不论在什么地方构造的表,不论是否有引用它,它都是存在的