Sobes.tech
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.