gpt4 book ai didi

arrays - `Array#<<` 是如何工作的?

转载 作者:数据小太阳 更新时间:2023-10-29 08:36:24 25 4
gpt4 key购买 nike

假设我声明数组如下:

array1 = [1,2,3,4,5]
array2 = array1

两个数组的对象ID相同:

array1.object_id = 118945940
array2.object_id = 118945940

当我如下在数组中插入一个元素时,

array1 << 10

结果是

array1 = [1, 2, 3, 4, 5, 10]
array2 = [1, 2, 3, 4, 5, 10]

但是当我将新数组添加到数组中时 array1 ,

array1 = array1 + [11,12]

array1 = [1,2,3,4,5,10,11,12]
array2 = [1,2,3,4,5,10]

两个数组的对象 ID 都已更改。

如何<<工作?

最佳答案

我认为这里的混淆是由于连接两个数组实际上创建了一个新数组(即:一个新对象)。

array1 + array2

这将创建一个新数组,其中包含两个数组的内容。所以对象 id 会改变,因为它是一个不同的对象。

当您使用 <<运算符它只是将一个元素添加到数组中 - ruby​​ 不会创建新对象,因此两个数组(共享一个对象 ID)都会获得新元素。

关于arrays - `Array#<<` 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35917094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com