Sobes.tech
Middle

Quelle est la différence entre copier un tableau et copier une structure en Swift?

sobes.tech IA

Réponse de l'IA

Une structure copiée est une nouvelle instance indépendante. Les modifications apportées à une structure n'affectent pas l'autre.

La copie d'un tableau (Array) en Swift est par défaut une "copie lors de l'écriture" (copy-on-write). Cela signifie qu'en créant une nouvelle référence à un tableau, les données ne sont pas dupliquées jusqu'à ce qu'une des copies soit modifiée. Jusqu'à ce moment, les deux variables pointent vers les mêmes éléments en mémoire. Lorsqu'une des copies est modifiée, une nouvelle instance indépendante des données est créée.

struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // Copie de la structure. p2 est une nouvelle instance

p2.x = 10 // La modification de p2 n'affecte pas p1

print("p1: \(p1.x), \(p1.y)") // Affiche : p1: 1, 2
print("p2: \(p2.x), \(p2.y)") // Affiche : p2: 10, 2

var array1 = [1, 2, 3]
var array2 = array1 // Copie lors de l'écriture

array2[0] = 10 // La copie réelle des données a lieu

print("array1: \(array1)") // Affiche : array1: [1, 2, 3]
print("array2: \(array2)") // Affiche : array2: [10, 2, 3]

La différence réside dans le comportement fondamental : les structures sont toujours copiées par valeur, tandis que les tableaux, étant des structures, implémentent l'optimisation "copier lors de l'écriture" pour une gestion plus efficace de la mémoire lors de références multiples.