ruby - 为什么在一个数组上插入/删除也会修改另一个数组?

标签 ruby arrays insert

我有一个关于对数组使用 insertdelete_at 的问题。如果我将一个元素插入数组 (arry),然后将该值存储在不同的变量 (temp) 中,为什么变量 temparry 上使用 delete_at 后会发生变化吗?有没有办法用插入对象永久保存数组的值?

下面是一些示例代码:

arry = [0,1,3,4]
# => [0, 1, 3, 4]
arry.insert(1,5)
# => [0, 5, 1, 3, 4]
temp = arry
# => [0, 5, 1, 3, 4]
arry.delete_at(1)
# => 5
temp
# => [0, 1, 3, 4]

最佳答案

当您将数组分配给新变量时,不会复制数组本身,而只会设置对该数组的引用。如果要将原始数组保存到新变量,则需要克隆数组 您可以通过 dup 来完成.

temp = arry.dup

关于ruby - 为什么在一个数组上插入/删除也会修改另一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17138062/

相关文章:

arrays - 在 EXCEL 中使用多个表的条件求和

php - 一键插入多个数据库(PHP/MySQL)

带有倒排索引的 Ruby & Mongodb 带来了一些有趣的结果

javascript - 在 Rails 应用程序中结合 Scriptaculous 和 jQuery

c++ - C++ Intel Parallel Studio 2015 中的二维动态分配全局数组

javascript - 按属性对三个不同的对象数组进行排序

tsql - T-SQL 插入 - 在表变量中选择非常慢

php - 信息未插入表中

html - 将 image_tag 压缩为一个

ruby - 如何在 Swift 中创建类似于 Ruby 中的扫描的函数