发表回复 
进度·记录/零散 关于对象数组一类东西很容易被坑的一个地方!!!
2016-05-07, 10 : 56
关于对象数组一类东西很容易被坑的一个地方!!!
大致就是,把一个对象的值赋值给另一个对象,一定要用.clone()方法,否则当你修改新对象中的值时,老对象中的值也会变化!!!

代码: (全选)
表1:={1:"abc",5:"haha",6:"gaga"}        ;表1有3个元素
表2:=表1                                                ;把表1赋值给表2
表2[5]:="lalalallaalal"                        ;修改表2的第2个元素(也就是名为5的那个元素,虽然名字叫5,但实际上是第2个元素)
MsgBox, % 表2[5]                                ;表2中的值发生变化
MsgBox, % 表1[5]                                ;表1中的值居然也跟着变化了!!!!!!

;如果想得到一个对象的值,同时修改时又不影响原对象,那么下面是正确的做法
表3:={1:"abc",5:"haha",6:"gaga"}        ;表3有3个元素
表4:=表3.Clone()                                    ;把表3赋值给表4
表4[5]:="lalalallaalal"                        ;修改表4的第2个元素(也就是名为5的那个元素,虽然名字叫5,但实际上是第2个元素)
MsgBox, % 表4[5]                                ;表4中的值发生变化
MsgBox, % 表3[5]                                ;表3中的值没有发生变化
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 3用户表示感谢兔子
2016-05-15, 20 : 19
RE: 关于对象数组一类东西很容易被坑的一个地方!!!
对象 地址 引用
借此问题,又小结了点..

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-22, 20 : 35
RE: 关于对象数组一类东西很容易被坑的一个地方!!!
是的,哪怕是对象的子对象,你对其修改,一样会影响全局的对象~~~
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-05-26, 23 : 31
RE: 关于对象数组一类东西很容易被坑的一个地方!!!
@火冷 按我小结的说法,
因为对象的子对象并不属于父对象,只是被一个对象(父对象)引用;而且对象都是被引用,物理上没有属于关系,被唯一引用,可以看做逻辑上的属于——属性属于对象。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-28, 00 : 32
RE: 关于对象数组一类东西很容易被坑的一个地方!!!
这也太坑了,以为:=是复制一个,两个对象互不相干;搜了下“浅拷贝”什么意思以为Clone才是互相影响的,完全反了,难怪Clone反倒慢呢,幸亏还没实际用过。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-28, 08 : 06
RE: 关于对象数组一类东西很容易被坑的一个地方!!!
@TSQJZKIHCVQXSBKA 对象复制/拷贝一般都需要显式进行。对象关系可能很复杂,展开了看,可能要手动指定哪些需要复制,实例化,引用。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-28, 12 : 50
RE: 关于对象数组一类东西很容易被坑的一个地方!!!
(2017-09-28 08 : 06)robertL 提到:  @TSQJZKIHCVQXSBKA 对象复制/拷贝一般都需要显式进行。对象关系可能很复杂,展开了看,可能要手动指定哪些需要复制,实例化,引用。
每个字都认得系列……先记下了。目前只会存取,别的还不明白。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合