Middle
Swift proqramlaşdırma dilində massiv nüsxələmək və struktur nüsxələmək arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kopyalanmış struktur yeni müstəqil nümunədir. Bir strukturda edilən dəyişikliklər digərinə təsir etmir.
Swift-də Array-in kopyalanması standart olaraq "copy-on-write" (yazma zamanı kopyalama) prinsipinə əsaslanır. Bu, yeni bir array referansı yaradıldıqda, məlumatların təkrarlanmadığı, yalnız bir nüsxə dəyişdirildikdə baş verir. Bu ana qədər hər iki dəyişən yaddaşda eyni elementlərə istinad edir. Bir nüsxə dəyişdirildikdə, yeni müstəqil məlumat nümunəsi yaradılır.
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // Strukturun kopyası. p2 yeni nümunədir
p2.x = 10 // p2-dəki dəyişiklik p1-ə təsir etmir
print("p1: \(p1.x), \(p1.y)") // Çıxış: p1: 1, 2
print("p2: \(p2.x), \(p2.y)") // Çıxış: p2: 10, 2
var array1 = [1, 2, 3]
var array2 = array1 // Yazma zamanı kopyalama
array2[0] = 10 // Faktiki məlumat kopyalanır
print("array1: \(array1)") // Çıxış: array1: [1, 2, 3]
print("array2: \(array2)") // Çıxış: array2: [10, 2, 3]
Fərq əsas davranışda yatıb: strukturlar həmişə dəyər üzrə kopyalanır, array-lər isə, strukturlar kimi, "copy-on-write" optimizasiyasını həyata keçirir və çoxsaylı referanslar üçün yaddaş idarəsini daha səmərəli edir.