Junior — Middle
Was ist der Unterschied zwischen Referenz- und Werttypen in der Programmiersprache Swift?
sobes.tech KI
Antwort von AI
In Swift werden Datentypen in Werttypen (value types) und Referenztypen (reference types) unterteilt.
-
Werttypen (z.B.
struct,enum, Tupel) werden beim Zuweisen oder Übergeben an eine Funktion kopiert. Das bedeutet, dass jede Variable ihre eigene unabhängige Kopie der Daten hat. -
Referenztypen (Klassen
class) übertragen beim Zuweisen oder Übergeben eine Referenz auf dasselbe Objekt im Speicher. Änderungen über eine Referenz sind durch andere sichtbar.
Beispiel:
struct Point {
var x: Int
var y: Int
}
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0, da p2 eine Kopie von p1 ist
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, da person2 und person1 auf dasselbe Objekt verweisen
Daher ist der Unterschied, dass Werttypen kopiert werden, während Referenztypen eine Referenz auf dasselbe Objekt übertragen.