Sobes.tech
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