lua 里面 local a = a,是在内存里复制了一份a,还是制造了a的“快捷方式”?

比如a={...}functionfunc(...)locala=aend这个locala=a意思是在内存里复制了一个数组a,还是只新建了一个指向数组a的“快捷方式”?... 比如

a = { ... }

function func(...)
local a = a

end

这个 local a = a 意思是在内存里复制了一个 数组a,还是只新建了一个指向 数组a 的“快捷方式”?
展开
 我来答
yaoyue1019
2015-11-30 · 知道合伙人互联网行家
yaoyue1019
知道合伙人互联网行家
采纳数:804 获赞数:3392
擅长lua脚本 与android前端交互设计

向TA提问 私信TA
展开全部
首先你得注意一下这行运行时 等号两边两个不同的a的意思
local a = xxx
表示把xxx赋值给a 但是这时候刚好这个xxx写的又是a
但是a必须在定义之后 才会指向本地的变量 所以此时执行a=a
是声明本地变量a 并且用全局变量a来赋值给他
以上是第一个要注意的,也就是等号两边两个a 指向的是不同东西 一个是局部变量,一个是全局变量
第二个要注意的就是lua里的赋值
lua中,基本类型(number boolean string nil)是值赋值 而其他类型(coroutine table function userdata)是引用赋值
所谓的引用赋值就是 把两个变量指向同一份地址(也可以说两个变量就是两个指针,也就是你所谓的快捷方式),不同于值赋值 值赋值的改变,相互之间是独立的,而引用赋值相互之间是会影响的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式