我知道这是一个非常基本的问题,但我对local
变量&它们在lua中的范围,例如,如果我写local x=12
,则意味着变量x
是局部变量&它的值是12
,但如果我写local x
&在下一行x=12
中,这是否与之前的情况相同或者x=12
被视为全局变量?
答案 0 :(得分:3)
你可以把它想象成两个完全独立的东西:
local x
创建一个"插槽"在本地范围内持有一个值,即一个变量。此变量名为x
。从那时起,在您退出该范围之前,对x
的任何引用都将引用该本地x
。
x = 12
将值放入变量x
。如果您之前创建了一个名为x的本地广告位,那就是它所在的位置。如果范围内没有本地x
,则它将进入全局范围。
local x = 12
只是组合这两件事的简写,创建一个局部变量并同时为其赋值。
所以,是的,你的两个场景实际上是等效的。
local x
x = 12
和
local x = 12
做同样的事情。
答案 1 :(得分:2)
每个范围只使用一次local
关键字,因此您示例中x
的第二次访问将使用本地x
。如果您希望访问全局x
,则可以使用__G.x