发现的一个奇怪的问题
lua吧
全部回复
仅看楼主
level 9
冷淡笑
楼主
RT,上图。
本人刚学lua,很多不懂,望前辈们指教下这是什么机制。
2015年10月17日 16点10分
1
level 9
冷淡笑
楼主
图上全局变量位置不同导致了调试结果不同,这种情况该如何避免?如果是全局变量不能声明在函数内的话,怎么贴吧的教程里是这样的
?
2015年10月17日 16点10分
2
level 9
冷淡笑
楼主
图2和贴吧教程的的全局变量都是声明在函数内的,为什么一个先声明全局变量就可以正常显示,一个先声明局部变量为什么显示的局部变量却是未赋值?
2015年10月17日 16点10分
3
level 5
江小熊1115
首先一点,lua在寻找变量是首先寻找局部变量,局部变量未果才找全局变量。
同一作用域下,假如先写了
i﹦1
接着又写
local i﹦2
实际是初始化了两个变量,一个全局变量i和一个局部变量i。
同样在同一作用域中,假如先写
local i﹦2
接着写
i﹦1
实际上是只存在一个局部变量i,前一句是声明并初始化了i这个局部变量,后一句是在对这个局部变量进行新一轮赋值。你例子中出现nil就是这个原因。
在实际开发中,应对局部变量和全局变量的命名进行约束,比如全局变量全大写,局部变量骆驼法
---贴吧极速版 For UWP
2015年10月17日 17点10分
4
冷淡笑
明白了,谢谢解惑
2015年10月18日 04点10分
江小熊1115
回复 叼花老汉 : 抬举了,我也是初级。380957062 ---贴吧极速版 For UWP
2015年11月10日 10点11分
level 1
langyo💢
这是局部变量与全局变量的机制
如果你这个函数体里与函数体外都定义一个同名的变量,那么函数体内的程序段使用这个变量时是用函数体内的,跟函数体外的毛关系都没有(不影响函数外这个同名变量的值);如果是在函数体外用这个变量,跟函数体内又是毛关系都没有(不影响函数内这个同名变量的值)。
实际上楼上已经解答了,我再做个补充,供参考,请笑纳
。
2015年11月13日 13点11分
5
冷淡笑
难道不是因为我先声明的是局部变量,然后再声明全局变量的时候就等于给局部变量重新赋值嘛?怎么感觉越来越混乱了啊~~~ 不过,还是感谢解惑哈
2015年11月14日 14点11分
langyo💢
@冷淡笑
嗯
2015年11月14日 15点11分
langyo💢
@冷淡笑
先声明局部跟全局根本没关系,管你局部声明在哪它的作用域都只在它那一个函数体里,而全局变量就作用于没有声明过与它同名局部变量的函数体和其所在的函数体喽;如果需要更详细的图解你可以回复我一下,我说不定能真的腾出时间来专门解答你这个问题
~
2015年11月14日 15点11分
冷淡笑
@langyo💢
我刚才仔细的看了下问题和解答,自己做了下实验,感觉已经明白了。只要函数体内和函数体外有同名变量,不是是局部还是全局变量,一律优先采用函数体内的。如果函数体内有同名变量,优先采用局部变量。
2015年11月14日 16点11分
level 1
一土双木炎
全局变量与局部变量的分析!
2015年11月16日 14点11分
6
1