首页 > 关于lua语言的两个小疑问

关于lua语言的两个小疑问

function GetTable()
   if gTable == nil then
       gTable = {}
   end
   return gTable
end

我想问两个问题:

  1. 这里 的gTable是局部变量还是全局变量
  2. 返回gTable的时候返回的是引用,还是返回给外部调用者一份拷贝数据

    local gTable
    ....
    function GetTable()
        if gTable == nil then
    ....

这时是 upvalue

传值还是传引用,这能开启一场大战的,还是去C++那里战吧。


1, 全局
2, 引用


lua中只要没有用local声明的都是全局变量,用local声明的在声明的那段代码段里面有效。 lua中的table都是引用传递的,包括 tablea = tableb 这种写法,两个值都是一样的,改一个另一个也会变化。网上有一些deepcopy的方法,原理上相当于创建新table,遍历老table挨个给新table赋值。


只要没有声明local的都是全局变量

【热门文章】
【热门文章】