局部变量在 lua 中实际上是如何工作的?
How does local variables actuallly work in lua?
我知道这是一个非常基本的问题,但我对 local
变量及其在 lua 中的范围感到很困惑,例如,如果我写 local x=12
,这意味着变量 x
是一个局部变量,它的值是 12
,但是如果我写 local x
& 在下一行 x=12
,这是否与以前的案例或 x=12
被视为全局变量?
每个作用域只使用一次 local
关键字,因此在您的示例中对 x
的第二次访问将使用本地 x
。如果您随后希望访问全局 x
,您可以使用 __G.x
你可以把它看成是两个完全独立的东西:
local x
在本地范围内创建一个 "slot" 来保存一个值,即一个变量。这个变量被命名为 x
。从那时起,直到您退出该范围,对 x
的任何引用都将引用该本地 x
.
x = 12
将值放入变量 x
。如果您之前已经创建了一个名为 x 的本地插槽,那么它就会去哪里。如果范围内没有本地 x
,它将进入全局范围。
local x = 12
只是一个 shorthand 用于组合这两个东西,创建一个局部变量并同时为其赋值。
所以是的,你的两个场景实际上是等价的。
local x
x = 12
和
local x = 12
做同样的事情。
我知道这是一个非常基本的问题,但我对 local
变量及其在 lua 中的范围感到很困惑,例如,如果我写 local x=12
,这意味着变量 x
是一个局部变量,它的值是 12
,但是如果我写 local x
& 在下一行 x=12
,这是否与以前的案例或 x=12
被视为全局变量?
每个作用域只使用一次 local
关键字,因此在您的示例中对 x
的第二次访问将使用本地 x
。如果您随后希望访问全局 x
,您可以使用 __G.x
你可以把它看成是两个完全独立的东西:
local x
在本地范围内创建一个 "slot" 来保存一个值,即一个变量。这个变量被命名为x
。从那时起,直到您退出该范围,对x
的任何引用都将引用该本地x
.x = 12
将值放入变量x
。如果您之前已经创建了一个名为 x 的本地插槽,那么它就会去哪里。如果范围内没有本地x
,它将进入全局范围。
local x = 12
只是一个 shorthand 用于组合这两个东西,创建一个局部变量并同时为其赋值。
所以是的,你的两个场景实际上是等价的。
local x
x = 12
和
local x = 12
做同样的事情。