局部变量如何在lua中正常工作?

时间:2015-05-28 06:16:09

标签: lua

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

2 个答案:

答案 0 :(得分:3)

你可以把它想象成两个完全独立的东西:

  1. local x创建一个"插槽"在本地范围内持有一个值,即一个变量。此变量名为x。从那时起,在您退出该范围之前,对x的任何引用都将引用该本地x

  2. x = 12将值放入变量x。如果您之前创建了一个名为x的本地广告位,那就是它所在的位置。如果范围内没有本地x,则它将进入全局范围。

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

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

    local x
    x = 12
    

    local x = 12
    

    做同样的事情。

答案 1 :(得分:2)

每个范围只使用一次local关键字,因此您示例中x的第二次访问将使用本地x。如果您希望访问全局x,则可以使用__G.x