这两种内存分配有什么区别?

和卢比奥

今天,我尝试解决一个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

为什么当我修改分配给一个变量的数组但将值分配给变量却不修改另一个变量时noderoot_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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

这两种内存分配有什么区别?

来自分类Dev

这两种异步方法有什么区别?

来自分类Dev

这两种递归方法有什么区别

来自分类Dev

这两种PhysicsVector方法有什么区别?

来自分类Dev

这两种实现之间有什么区别?

来自分类Dev

这两种情况有什么区别?

来自分类Dev

这两种结构有什么区别

来自分类Dev

这两种函数声明有什么区别?

来自分类Dev

这两种语法有什么区别?

来自分类Dev

这两种 Scala 模式有什么区别?

来自分类Dev

这两种做法有什么区别:

来自分类Dev

这两种集群配置有什么区别?

来自分类Dev

这两种调用基类副本分配的方式有什么区别?

来自分类Dev

这两种调用基类副本分配的方式有什么区别?

来自分类Dev

如果这两种Perl书写风格有什么区别,为什么结果不同?

来自分类Dev

这两种创建对象文字的不同方式有什么区别

来自分类Dev

这两种Pig数据类型之间有什么区别?

来自分类Dev

这两种形式的std :: map列表初始化有什么区别?

来自分类Dev

这两种原型继承的实现之间有什么区别?

来自分类Dev

递归中这两种方式有什么区别?

来自分类Dev

这两种方式创建对象有什么区别?

来自分类Dev

这两种MySQL连接方法有什么区别

来自分类Dev

这两种声明函数的方式有什么区别?

来自分类Dev

这两种执行TypeScript方法的方式有什么区别?

来自分类Dev

这两种编写结构的方式有什么区别?

来自分类Dev

这两种在python中定义列表的方式有什么区别?

来自分类Dev

这两种在C ++中实现函数的方式有什么区别?

来自分类Dev

这两种在vb .Net中进行编码的方式有什么区别

来自分类Dev

递归算法的这两种实现有什么区别?

Related 相关文章

热门标签

归档