我试图返回一个多维数组的子集,试图保持维度的确切结构,但是..发生了一些奇怪的事情......请看一下:
space = [ [ [1],[2],[3] ], [ [4],[5],[6] ], [ [70],[8],[9] ] ]
space_subset = space[(1..2)].collect { |y| y[1] }
=> [[5], [8]]
让我们分解一下:
space[(1..2)]
=> [ [ [4], [5], [6] ], [ [70], [8], [9] ] ]
所以现在我可以确定我在调用什么 .collect on
实际上:
[ [ [4], [5], [6] ], [ [70], [8], [9] ] ].collect { |y| y[1] }
=> [[5], [8]]
然后......(对于真正的问题)......
如果现在 space_subset 是 [[5], [8]]
我尝试像这样修改它:
space_subset[1].delete (8)
正如预期的那样,我得到:=> [[5], []]
为什么这同时修改了我从中提取子集数组的原始“空间”数组?
如果现在我这样做:
space
=> [[[1], [2], [3]], [[4], [5], [6]], [[70], [], [9]]]
缺少“8”,与我从 space_subset 中删除的值相同
我正在查看 ruby Array api 文档,从我正在阅读的内容来看,我的代码应该可以毫无意外地工作......但是......仍然......
你能帮我弄清楚我做错了什么,或者这里有什么误解吗?
感谢所有花时间回答的人