Swift で非常に奇妙な動作を見つけました。コードは次のとおりです。
var array2d: [[Int]] = [[1]]
print(array2d) // prints [[1]]
var first = array2d[0]
first.append(2)
print(array2d) // still prints [[1]]!!!
最後の行が印刷されることを完全に期待しています[[1, 2]]
。現在の行動を説明することはできません。array2d[0]
最初のアイテムへの参照、またはその参照のコピーを返すことを期待しています。どちらの場合でも、そのオブジェクトを変更すると、変更する必要がありarray2d
ます。しかし、それは起こっていることではありません。
ただし、次のように配列を更新すると:
array2d[0].append(2)
次に[[1, 2]]
、期待どおりに出力します。
誰かが私のためにこれを説明してもらえますか?