Wat is het verschil tussen het kopiëren van een array en structuren in Swift?
sobes.tech AI
Antwoord van AI
Arrays in Swift zijn structuren (struct).
Bij het kopiëren van een array wordt een nieuwe kopie van de elementen gemaakt. Wijzigingen in één array beïnvloeden de andere niet.
var array1 = [1, 2, 3]
var array2 = array1 // Kopie wordt gemaakt
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]
Structuren in Swift zijn waardetypes (value types). Bij toewijzing of doorgeven van een structuur aan een functie wordt een nieuwe kopie van de gegevens gemaakt. Wijzigingen in één kopie van de structuur beïnvloeden de andere kopieën niet.
struct Point {
var x: Int
var y: Int
}
var point1 = Point(x: 0, y: 0)
var point2 = point1 // Kopie wordt gemaakt
point2.x = 10
// point1.x = 0
// point2.x = 10
Het verschil is dat arrays, als structuren, gedrag van het waardetype vertonen bij kopiëren, en een volledige kopie van hun elementen maken. Structuren zijn over het algemeen ook waardetypes en maken bij kopiëren een nieuwe kopie van hun eigenschappen. Daarom geldt voor beide entiteiten (arrays en structuren) de kopieersemantiek copy-by-value. Het verschil is dat een array een container is voor andere waarden, die zowel waardetypes als referentietypes kunnen zijn.