Middle
Koja je razlika između kopiranja niza i kopiranja strukture u programskom jeziku Swift?
sobes.tech АИ
Одговор од АИ
Kopirana struktura je nova nezavisna instanca. Promene u jednoj strukturi ne utiču na drugu.
Kopiranje niza (Array) u Swift-u podrazumevano se vrši kao "copy-on-write" (kopiranje pri pisanju). To znači da, kada se kreira nova referenca na niz, podaci se ne dupliraju dok jedna od kopija ne bude izmenjena. Do tada, obe promenljive ukazuju na iste elemente u memoriji. Kada se jedna od kopija izmeni, kreira se novi nezavisni primer podataka.
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // Kopiranje strukture. p2 je novi primer
p2.x = 10 // Izmena p2 ne utiče na p1
print("p1: \(p1.x), \(p1.y)") // Izlaz: p1: 1, 2
print("p2: \(p2.x), \(p2.y)") // Izlaz: p2: 10, 2
var array1 = [1, 2, 3]
var array2 = array1 // Kopiranje pri pisanju
array2[0] = 10 // Dešava se stvarno kopiranje podataka
print("array1: \(array1)") // Izlaz: array1: [1, 2, 3]
print("array2: \(array2)") // Izlaz: array2: [10, 2, 3]
Razlika leži u fundamentalnom ponašanju: strukture se uvek kopiraju po vrednosti, dok implementiraju "copy-on-write" optimizaciju za efikasnije upravljanje memorijom kod višestrukih referenci.