Sobes.tech
Middle

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

sobes.tech АИ

Одговор од АИ

Копирање низа у Swift-у креира нову, независну копију целог садржаја. Промене у оригиналном низу не утичу на копију и обратно.

Копирање структуре у Swift-у такође креира нову копију свих њених својстава. Ако структура садржи угнежђене референтне типове (нпр. класе), копира се референца на тај објекат, а не сам објекат. Промене у референтном типу унутар копиране структуре одражавају се у оригиналу.

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

// Копирање структуре
var point1 = Point(x: 10, y: 20)
var point2 = point1 // Копирање структуре
point2.x = 30
print(point1.x) // Исписаће 10 (point1 се није променио)

class Container {
    var value: Int
    init(value: Int) {
        self.value = value
    }
}

struct HasReference {
    var data: Container
}

// Копирање структуре са референтним типом
var ref1 = HasReference(data: Container(value: 100))
var ref2 = ref1 // Копирање структуре
ref2.data.value = 200 // Промена референтног типа унутар структуре
print(ref1.data.value) // Исписаће 200 (промена се одразила)

// Копирање низа (по вредности)
var array1 = [1, 2, 3]
var array2 = array1 // Копирање низа
array2[0] = 10
print(array1[0]) // Исписаће 1 (промена у array2 није утицала на array1)

// Копирање низа који садржи референтне типове
var containers1 = [Container(value: 1), Container(value: 2)]
var containers2 = containers1 // Копирање низа (референце се копирају)
containers2[0].value = 10 // Промена преко референце у array2
print(containers1[0].value) // Исписаће 10 (промена се одразила у array1)

Карактеристика Низ Структура (без референтних својстава) Структура (са референтним својствима)
Принцип копирања По вредности (површна копија) По вредности По вредности (копирају се референце)
Независност копија Независне по садржају Независне по свим својствима Независне по својствима-вредностима, зависне од референтних својстава
Дубока копија Јасна имплементација је потребна Природно Јасна имплементација за референтна својства