Sobes.tech
Middle

Koja je razlika između kopiranja niza i struktura u Swift-u?

sobes.tech АИ

Одговор од АИ

Nizovi u Swift-u su strukture (struct).

Prilikom kopiranja niza, kreira se nova kopija elemenata. Promene u jednom nizu ne utiču na drugi.

var array1 = [1, 2, 3]
var array2 = array1 // Kopiranje se vrši
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]

Strukture u Swift-u su tipovi-vrednosti (value types). Prilikom dodele ili prosleđivanja strukture funkciji, kreira se nova kopija podataka. Promene u jednoj kopiji strukture ne utiču na ostale kopije.

struct Point {
    var x: Int
    var y: Int
}

var point1 = Point(x: 0, y: 0)
var point2 = point1 // Kopiranje se vrši
point2.x = 10
// point1.x = 0
// point2.x = 10

Razlika je u tome što nizovi, kao strukture, pokazuju ponašanje tipa-vrednosti pri kopiranju, stvarajući punu kopiju svojih elemenata. Strukture uopšte su takođe tipovi-vrednosti i pri kopiranju stvaraju novu kopiju svojih svojstava. Dakle, za obe entiteta (nizove i strukture) važi semantika kopiranja po-vrednosti (copy-by-value). Razlika je u tome što je niz kontejner za druge vrednosti, koje mogu biti i tipovi-vrednosti i tipovi-poziva.