Я обнаружил очень странное поведение в 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]]
.
Может кто-нибудь объяснить мне это?