Sobes.tech
Middle

Qual é a diferença entre copiar um array e estruturas em Swift?

sobes.tech IA

Resposta da IA

Os arrays em Swift são estruturas (struct).

Ao copiar um array, uma nova cópia dos elementos é criada. As alterações em um array não afetam o outro.

var array1 = [1, 2, 3]
var array2 = array1 // Cópia ocorre
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]

As estruturas em Swift são tipos de valor (value types). Ao atribuir ou passar uma estrutura para uma função, uma nova cópia dos dados é criada. As alterações em uma cópia da estrutura não afetam as outras cópias.

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

var point1 = Point(x: 0, y: 0)
var point2 = point1 // Cópia ocorre
point2.x = 10
// point1.x = 0
// point2.x = 10

A diferença está no fato de que arrays, sendo estruturas, demonstram um comportamento de tipo de valor ao serem copiados, criando uma cópia completa de seus elementos. Estruturas em geral também são tipos de valor e, ao serem copiadas, criam uma nova cópia de suas propriedades. Assim, para ambas as entidades (arrays e estruturas), a semântica de cópia por valor (copy-by-value) se aplica. A diferença é que um array é um contêiner para outros valores, que podem ser tanto tipos de valor quanto tipos de referência.