lua使用table问题

今天在开发的时候,自己建立了一个table。建立代码如下:
		self.skill_value_table = {  skill_id = 0, 
		 			    show_type = 3, 
		 			  }
		self.skill_table = {}

		for i = 1, 8 do

			self.skill_table[i] = self.skill_value_table 

		end 

这样每次去改变self.skill_table[i]的值,所有的值都会跟着改变。

如果是以下这种方式创建:

		self.skill_table = {}

		for i = 1, 8 do
			local skill_value_table = {skill_id = 0, show_type = 3,}
			self.skill_table[i] = skill_value_table
		end 
这样每项值就没有了关联。

出现差异是因为lua中table的赋值类似c++的引用。只要改变一项,其他的也会跟着改变。因此,使用local变量,相当于通过自定义函数来赋值。

当创建一个table A以后,A的所有变量存在一块内存里。直接使用=号赋值,相当与对内存建立了另一份引用B;此时A和B都可以操作内存,内存变量改变,大家引用的值也将会改变。 当A={},重新赋值后,只是将之前的引用断了,指向新的内存;此时B还可以继续操作。当没有引用存在时,内存才会被释放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值