当前位置:  开发笔记 > 编程语言 > 正文

Ruby为数组数组的不同方法提供了不同的结果

如何解决《Ruby为数组数组的不同方法提供了不同的结果》经验,为你挑选了1个好方法。

我试图将一些值附加到数组数组中的特定数组,如下所示:

a1 = [[]] * 2
a1[0] << -1
a1 # => [[-1], [-1]]
a2 = [[], []]
a2[0] << -1
a2 # => [[-1], []]
[[]] * 2 == [[], []] # => true

a2具有预期价值,而a1似乎是错误的.我所期待的是a1,[[-1], []]因为我改变了a1[0]而不是a1[1].



1> shivam..:

你应该使用:

a1 = Array.new(2) { [] }

[[]]*2是重复,只是重复相同的对象[]两次.

为了支持我的上述观点:

a1 = [[]] * 2
a1.map(&:object_id)
#=> [26686760, 26686760]   # same object ids

a3 = Array.new(2) { [] }
a3.map(&:object_id)
#=> [23154760, 23154680]   # different object ids

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有