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 |