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.