Sobes.tech
Middle

Swift-də massiv və strukturları kopyalamaq arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Swift-də massivın kopyalanması bütün məzmunun yeni və müstəqil nüsxəsini yaradır. Əsas massivdəki dəyişikliklər nüsxəyə təsir etmir və əksinə.

Swift-də strukturun kopyalanması onun bütün xüsusiyyətlərinin yeni nüsxəsini də yaradır. Əgər struktur daxilində iç-içə referens tiplər (məsələn, siniflər) varsa, bu obyektə olan referens kopyalanır, obyekt özü yox. Kopyalanmış struktur daxilində referens tipindəki dəyişikliklər orijinalda da əks olunur.

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

// Strukturun kopyalanması
var point1 = Point(x: 10, y: 20)
var point2 = point1 // Strukturun kopyalanması
point2.x = 30
print(point1.x) // 10 göstərəcək (point1 dəyişməyib)

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

struct HasReference {
    var data: Container
}

// Referens tipli strukturun kopyalanması
var ref1 = HasReference(data: Container(value: 100))
var ref2 = ref1 // Strukturun kopyalanması
ref2.data.value = 200 // Struktur daxilində referens tipini dəyişirik
print(ref1.data.value) // 200 göstərəcək (dəyişiklik əks olundu)

// Array-in kopyalanması (qiymət üzrə)
var array1 = [1, 2, 3]
var array2 = array1 // Array-in kopyalanması
array2[0] = 10
print(array1[0]) // 1 göstərəcək (array2-dəki dəyişiklik array1-ə təsir etməyib)

// Referens tiplərini ehtiva edən array-in kopyalanması
var containers1 = [Container(value: 1), Container(value: 2)]
var containers2 = containers1 // Array-in kopyalanması (referanslar kopyalanır)
containers2[0].value = 10 // array2-də referans vasitəsilə dəyişiklik
print(containers1[0].value) // 10 göstərəcək (dəyişiklik array1-də də əks olundu)

Xüsusiyyət Array Struktur (referens xüsusiyyətləri olmayan) Struktur (referens xüsusiyyətləri ilə)
Kopyalama prinsipi Qiymət üzrə (sığ kopya) Qiymət üzrə Qiymət üzrə (referanslar kopyalanır)
Nüsxələrin müstəqilliyi Məzmun üzrə müstəqil Bütün xüsusiyyətlər üzrə müstəqil Xüsusiyyət-dəyər üzrə müstəqil, referens xüsusiyyətlərindən asılı
Dərin kopya Aydın şəkildə həyata keçirilməlidir Təbii şəkildə Referens xüsusiyyətləri üçün aydın şəkildə həyata keçirilməlidir