type
status
date
slug
summary
tags
category
icon
password
记录一次奇怪的问题
以下代码是已经修改后正确的代码
这段代码在运行时出现了一个问题,从断点观察时listData的值非常正常,但是在走完第二次循环的值时发现listData中的key为1和2的值变成一样的了,在多次修改调式时候发现这里是一个很容易忽视的具体问题——值的引用关系:
在这段代码中,有一些潜在的值引用问题。在第9行,我将
activeCommonConfig
设置为v1
,这意味着activeCommonConfig
和v1
引用相同的内存地址。然后,我更改了activeCommonConfig.info.data
的值,这实际上更改了v1.info.data
的值,因为它们引用相同的内存地址。这可能会导致意外的行为,因为您可能不希望更改v1
的值。同样,在第13行,我将
activeCommonConfig
的值插入到listData
中,这意味着listData
中的元素和activeCommonConfig
引用相同的内存地址。然后,您更改了activeCommonConfig.info.money
的值,这实际上更改了listData
中相应元素的info.money
的值,因为它们引用相同的内存地址。这可能会导致意外的行为,因为您可能不希望更改listData
中的元素。为了解决这些问题,可以使用
table.deepcopy
函数来复制表,而不是将表分配给新变量。这将创建一个新的表,其中包含与原始表相同的值,但是它们引用不同的内存地址。这将确保更改一个变量的值不会更改另一个变量的值。- 作者:BWmol233
- 链接:http://www.bwmol234.fun/article/Lua230914-1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。