佚名通过本文主要向大家介绍了lua语言翻译,lua语言,lua语言教程,lua语言视频教程,lua语言编辑器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于lua语言的两个小疑问
描述:
解决方案1:
描述:
function GetTable() if gTable == nil then gTable = {} end return gTable end
我想问两个问题:
- 这里 的gTable是局部变量还是全局变量
- 返回gTable的时候返回的是引用,还是返回给外部调用者一份拷贝数据
解决方案1:
- 不是局部变量,可能是全局变量或者upvalue
local gTable
....
function GetTable()
if gTable == nil then
....
这时是 upvalue
- 传值
lua 没有传引用的概念,对于table或function或string等请理解为传地址
返回时必然拷贝数据,你可以理解为拷贝了表的地址然后返回,不会引起表的深拷贝
传值还是传引用,这能开启一场大战的,还是去C++那里战吧。
解决方案2:lua中只要没有用local声明的都是全局变量,用local声明的在声明的那段代码段里面有效。 lua中的table都是引用传递的,包括 tablea = tableb 这种写法,两个值都是一样的,改一个另一个也会变化。网上有一些deepcopy的方法,原理上相当于创建新table,遍历老table挨个给新table赋值。
解决方案3:只要没有声明local的都是全局变量
解决方案4:1, 全局
2, 引用