Sobes.tech
Middle

Standart massiv to'plamlari qiymat turlari va referens turlarimi?

sobes.tech AI

AIdan javob

Swift'də (Array) massivlər (Array) strukturlardır (struct), və strukturlar dəyər növləridir (Value Types). Bir massiv təyin edilərkən və ya ötürülərkən, onun nüsxəsi yaradılır.

Ancaq performansı optimallaşdırmaq üçün, nüsxə sistemi Copy-on-Write davranışına malikdir. Bu, massiv məlumatlarının faktiki nüsxəsinin, nüsxələrdən birinin ilk dəyişdirilməsi zamanı baş verdiyi anlamına gəlir. Bu vaxta qədər, hər iki nüsxə eyni məlumat saxlamağı paylaşır.

Dəyər növləri: Struct, Enum, Int, String, Double, Bool. İstinad növləri: Class, Function, Closure.

Copy-on-Write-ı izah edən nümunə:

var initialArray = [1, 2, 3]
var copiedArray = initialArray // Hələ faktiki məlumat nüsxəsi yoxdur

print(initialArray[0]) // 1
print(copiedArray[0])  // 1

copiedArray[0] = 10     // Burada faktiki məlumat nüsxəsi yaranır

print(initialArray[0]) // 1 (orijinal massiv dəyişməyib)
print(copiedArray[0])  // 10 (yalnız kopyalanmış versiya dəyişib)