Swift'de gerçekten tuhaf bir davranış buldum. İşte kod:Swift öğesinde düzenleme öğeleri
var array2d: [[Int]] = [[1]]
print(array2d) // prints [[1]]
var first = array2d[0]
first.append(2)
print(array2d) // still prints [[1]]!!!
Tamamen son satırı [[1, 2]]
yazdırmak için beklenebilir. Mevcut davranışı açıklayamam. array2d[0]
'un, ilk öğeye yapılan bir referansı veya bu referansın bir kopyasını göndermesini beklerdim. Her iki durumda da, bu nesneyi değiştirmek array2d
'u değiştirmelidir. Ama olan bu değil. beklendiği gibi, daha sonra [[1, 2]]
yazdırır
array2d[0].append(2)
:
Ancak, böyle diziyi güncelleyin.
Birisi bunu benim için açıklayabilir mi?
Başka bir deyişle, her şeyin derin bir kopyasını yapıyor? – Macondo2Seattle