【问题标题】:How does local variables actuallly work in lua?局部变量如何在 lua 中实际工作?
【发布时间】:2015-05-28 06:16:09
【问题描述】:

我知道这是一个非常基本的问题,但我对 local 变量及其在 lua 中的范围感到非常困惑,例如,如果我写 local x=12,这意味着变量 x 是一个局部变量& 它的值是12,但如果我在下一行写local x & 在x=12 中,这是否意味着与前面的情况相同或x=12 被视为全局变量?

【问题讨论】:

  • Mind-bender: local x=12 local x=x+11 两个变量:第二个的值为 23;第一个仍然具有值 12,但此后由于被第二个遮蔽而无法访问。

标签: lua


【解决方案1】:

您可以将其视为两个完全独立的事物:

  1. local x 在本地范围内创建一个“槽”来保存一个值,即一个变量。这个变量被命名为x。从那时起,直到您退出该范围,对x 的任何引用都将引用该本地x

  2. x = 12 将一个值放入变量x。如果您之前已经创建了一个名为 x 的本地插槽,那么它就会出现在该位置。如果作用域中没有本地的x,它将进入全局作用域。

local x = 12 只是将这两件事结合起来的简写,创建一个局部变量并同时为其赋值。

所以是的,你的两个场景实际上是等效的。

local x
x = 12

local x = 12

做同样的事情。

【讨论】:

    【解决方案2】:

    每个作用域只使用一次local 关键字,因此在您的示例中第二次访问x 将使用本地x。如果你想访问全局x,你可以使用__G.x

    【讨论】:

    • 所以你的意思是说在第二种情况下x=12 意味着local x=12 对吗??
    • @caesargetit 这是不正确的。 local x=12 表示一个新的局部变量xx=12 表示将 12 分配给最近的本地 x,如果没有,则分配给全局变量 x
    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2015-05-30
    • 2014-01-31
    相关资源
    最近更新 更多