Middle
Colecțiile standard de array sunt tipuri de valoare și tipuri de referință?
sobes.tech AI
Răspuns de la AI
Array-urile (Array) în Swift sunt structuri (struct), iar structurile sunt tipuri de valoare (Value Types). La atribuirea sau transmiterea unui array, se face o copie a acestuia.
Cu toate acestea, pentru a optimiza performanța, sistemul de copiere a array-urilor are un comportament Copy-on-Write. Aceasta înseamnă că copia efectivă a datelor array-ului are loc doar la prima modificare a uneia dintre copii. Până atunci, ambele copii împart aceeași stocare de date.
Tipuri de valoare: Struct, Enum, Int, String, Double, Bool. Tipuri de referință: Class, Function, Closure.
Exemplu care ilustrează Copy-on-Write:
var initialArray = [1, 2, 3]
var copiedArray = initialArray // Încă nu există o copie reală a datelor
print(initialArray[0]) // 1
print(copiedArray[0]) // 1
copiedArray[0] = 10 // Aici are loc copia reală a datelor
print(initialArray[0]) // 1 (array-ul original nu s-a schimbat)
print(copiedArray[0]) // 10 (doar versiunea copiată s-a schimbat)