Sobes.tech
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.