• lua变量作用域


    3.5 – Visibility Rules

    Lua is a lexically scoped language. The scope of a local variable begins at the first statement after its declaration and lasts until the last non-void statement of the innermost block that includes the declaration. Consider the following example:

         x = 10                -- global variable
         do                    -- new block
           local x = x         -- new 'x', with value 10
           print(x)            --> 10
           x = x+1
           do                  -- another block
             local x = x+1     -- another 'x'
             print(x)          --> 12
           end
           print(x)            --> 11
         end
         print(x)              --> 10  (the global one)
    

    Notice that, in a declaration like local x = x, the new x being declared is not in scope yet, and so the second x refers to the outside variable.

    Because of the lexical scoping rules, local variables can be freely accessed by functions defined inside their scope. A local variable used by an inner function is called an upvalue, or external local variable, inside the inner function.

    Notice that each execution of a local statement defines new local variables. Consider the following example:

         a = {}
         local x = 20
         for i=1,10 do
           local y = 0
           a[i] = function () y=y+1; return x+y end
         end
    

    The loop creates ten closures (that is, ten instances of the anonymous function). Each of these closures uses a different y variable, while all of them share the 

  • 相关阅读:
    oracle在没
    一天中时针和分钟重合的次数
    oracle的隐藏的东东
    左右小移动
    JS全选的操作
    JS定时器
    在文件中查找字符串
    表单原件
    div和span互换
    div和span的区别
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/10049603.html
Copyright © 2020-2023  润新知