level 2
local data = 100;
local function fun1()
print(data);
data = data+50;
end
data = 200;
local data = 300; -- 重新定义一个局部变量
local function fun2()
print(data);
data = data+50;
end
data = 400;
--调用
fun1(); -- 200
fun2(); -- 400
fun1(); -- 250
fun2(); -- 450
2015年03月07日 08点03分
1
level 2
lua代码执行顺序是这样,遇函数跳过(加print验证得出)?几次赋值data,不覆盖吗
2015年03月07日 08点03分
2
level 13
首先,你要明白,一个function在定义的时候是不会执行的,比如你的local function fun1()....end这一段,等价于:
local fun1 = function () ... end
也就是说,它只定义了一个变量fun1,同时这个变量指向一块代码区,其中的代码就是函数体。
其次,既然你知道local data = 300; 这里是 重新定义了一个局部变量,那么在lua内部,它是和前面出现的data完全不同的另外一个变量,分配了不同的存储空间,其后出现的所有data都是指向这个新的变量和地址。
如此,你只需将原来的代码中重新定义后的data全部改写为data2,就能明白是怎么执行的了。
最后,建议初学者不要用在一个chunk里面给不同的变量使用相同的名字,这会自己把自己彻底搞晕。
2015年03月15日 05点03分
4
level 7
定义函数,那之后每次涉及函数内容都可以以其函数名与变量直接完成。函数定义就是相当于将多次重复的代码实现写好,相当于一个模板
2015年03月17日 15点03分
5