lua中的upvalue 闭包

ua中的变量,分为三种类型:Global,Local,UpVal.前面两种不需解释,第三种变量,稍微做些代码层面上的解释,比如:

function test()
   local a = 1
   function t()
       a = 2
   end
end

对函数test而言,当对变量a进行赋值的时候,会首先查找在本函数中是否有变量a的定义,如果没有发现则向更外一层的函数去查找,这个过程一直到全局查找.如果在某个更上一层的函数中找到了,那么就是这个变量对于该函数而言就是一个Upval;否则如果在全局域中找到,则是一个全局变量.

posted @ 2015-01-20 15:54  mooreliu  阅读(184)  评论(0编辑  收藏  举报