Sobes.tech
Middle

Was ist der Unterschied zwischen dem Kopieren eines Arrays und Strukturen in Swift?

sobes.tech KI

Antwort von AI

Arrays in Swift sind Strukturen (struct).

Beim Kopieren eines Arrays wird eine neue Kopie der Elemente erstellt. Änderungen an einem Array wirken sich nicht auf das andere aus.

var array1 = [1, 2, 3]
var array2 = array1 // Kopieren erfolgt
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]

Strukturen in Swift sind Werttypen (value types). Beim Zuweisen oder Übergeben einer Struktur an eine Funktion wird eine neue Kopie der Daten erstellt. Änderungen an einer Kopie der Struktur beeinflussen nicht die anderen Kopien.

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

var point1 = Point(x: 0, y: 0)
var point2 = point1 // Kopieren erfolgt
point2.x = 10
// point1.x = 0
// point2.x = 10

Der Unterschied besteht darin, dass Arrays, die Strukturen sind, beim Kopieren das Verhalten eines Werttyps zeigen und eine vollständige Kopie ihrer Elemente erstellen. Strukturen im Allgemeinen sind ebenfalls Werttypen und erstellen beim Kopieren eine neue Kopie ihrer Eigenschaften. Daher gilt für beide Entitäten (Arrays und Strukturen) die Kopiersemantik copy-by-value. Der Unterschied besteht darin, dass ein Array ein Container für andere Werte ist, die sowohl Werttypen als auch Referenztypen sein können.