今天,我尝试解决一个kata问题,使我逐步完成了一部分练习。我遇到的问题可以简化为以下细微差别:
node = [1]
root_node = node
node << 2
p node #[1,2]
p root_node #[1,2]
node = 1
root_node = node
new_node = 3
node = new_node
p node #3
p root_node #1
为什么当我修改分配给一个变量的数组但将值分配给变量却不修改另一个变量时node
,root_node
两者都改变?
我本来期望node = [1,2]
和root_node = [1]
。
有人可以阐明这一点,还是可以引导我浏览有关此问题的文档。我认为我从来没有注意到这种情况。谢谢。
分配数组时,变量将保存对该数组的引用值。将其分配给另一个变量时,将复制引用。然后,当您调用<<
对数组进行变异时,由于只有一个数组,因此在两个变量下都可见。
分配整数时,此整数的a值存储在变量中。重新分配它时,另一个值存储在此变量中。如果使用常量a = 1
或其他变量进行重新分配,则没有任何区别a = b
。
需要注意的重要一点是,分配也适用于数组-引用的值已重新分配。如果分配另一个数组,则原始数组不会更改。
node = [1]
root_node = node
new_node = [3]
node = new_node
p node
#[3]
p root_node
#[1]
也可以看看:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句