Care este diferența dintre copierea unui array și a structurilor în Swift?
sobes.tech AI
Răspuns de la AI
Array-urile în Swift sunt structuri (struct).
Când se copiază un array, se creează o copie nouă a elementelor. Modificările într-un array nu afectează celălalt.
var array1 = [1, 2, 3]
var array2 = array1 // Se face o copie
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]
Structurile în Swift sunt tipuri de valoare (value types). La atribuirea sau transmiterea unei structuri către o funcție, se creează o copie nouă a datelor. Modificările într-o copie a structurii nu afectează celelalte copii.
struct Point {
var x: Int
var y: Int
}
var point1 = Point(x: 0, y: 0)
var point2 = point1 // Se face o copie
point2.x = 10
// point1.x = 0
// point2.x = 10
Diferența constă în faptul că array-urile, fiind structuri, manifestă comportament de tip valoare la copiere, creând o copie completă a elementelor lor. Structurile în general sunt, de asemenea, tipuri de valoare și, la copiere, creează o copie nouă a proprietăților lor. Astfel, pentru ambele entități (array-uri și structuri), se aplică semantica de copiere după valoare (copy-by-value). Diferența este că un array este un container pentru alte valori, care pot fi atât tipuri de valoare, cât și tipuri de referință.