Junior
Wat is het verschil tussen referentietypen en waarde-typen?
sobes.tech AI
Antwoord van AI
Value Types (Waarde Types) worden gekopieerd bij toewijzing of doorgeven aan een functie. Elke instantie heeft een eigen kopie van de gegevens.
Reference Types (Referentietypes) worden bij toewijzing of doorgeven aan een functie als een verwijzing naar dezelfde gegevensinstantie doorgegeven. Wijzigingen via één verwijzing worden weerspiegeld op alle andere verwijzingen naar diezelfde instantie.
| Kenmerk | Value Type | Reference Type |
|---|---|---|
| Gedrag bij toewijzing/doorgeven | Kopiëren | Verwijzing doorgeven |
| Locatie in geheugen | Stack (Heap) | Heap (Stack) |
| Geheugenbeheer | Automatisch (via stack) | Automatisch (ARC) |
| Voorbeelden in Swift | struct, enum, tuple |
class, func, closure |
// Voorbeeld van Value Type (Struct)
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 krijgt een kopie van p1
p2.x = 10 // Wijziging aan p2 beïnvloedt p1 niet
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)
// Voorbeeld van Reference Type (Class)
class Coordinate {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
var c1 = Coordinate(x: 1, y: 2)
var c2 = c1 // c2 verwijst naar hetzelfde object als c1
c2.x = 10 // Wijziging aan c2 beïnvloedt c1, omdat ze naar hetzelfde object verwijzen
print("c1: \(c1.x)") // c1: 10
print("c2: \(c2.x)") // c2: 10