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