次元の正確な構造を維持しようとして、多次元配列のサブセットを返そうとしていますが、何か奇妙なことが起こっています...見てください:
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 docs を見ていますが、読んでいるものから、コードは驚くことなく動作するはずです...しかし..それでも.....
私が間違っていること、またはここで誤解していることを理解するのを手伝ってもらえますか?
時間を割いて回答してくださった皆様、ありがとうございました