Sobes.tech
Junior

Wat is het verschil tussen referentietypen en waarde typen?

sobes.tech AI

Antwoord van AI

Verwijzing slaat een adres in het geheugen op dat wijst naar de gegevens die daar zijn opgeslagen. In feite bezit de variabele die de verwijzing opslaat alleen dat adres, niet de gegevens zelf. Het toewijzen van een referentietype aan een variabele kopieert de verwijzing, niet de gegevens. Wijzigingen in de gegevens waar de verwijzing naar wijst, worden weerspiegeld in alle variabelen die deze verwijzing opslaan.

Het waarde-type slaat direct de gegevens op. Het toewijzen van een waarde-type aan een variabele kopieert de gegevens zelf. Wijzigingen in een waarde-type variabele beïnvloeden andere variabelen die deze kopie hebben ontvangen niet.

Kenmerk Referentietype Waarde-type
Opslag Verwijzing naar gegevens De gegevens zelf
Toewijzing Kopie van de verwijzing Kopie van de gegevens
Wijziging Heeft invloed op alle verwijzingen Heeft geen invloed op kopieën
Plaatsing In de heap In de stack
Vrijgave ARC / garbage collector Automatisch bij het verlaten van de scope
Voorbeelden in Swift class, closure struct, enum, tuple, basistypen (Int, Bool, String, etc.)
// Voorbeeld van een referentietype (klasse)
class ReferenceType {
    var value: Int
    init(value: Int) {
        self.value = value
    }
}

let ref1 = ReferenceType(value: 10)
let ref2 = ref1 // De verwijzing wordt gekopieerd
ref2.value = 20 // De gegevens waar ref1 en ref2 naar wijzen, veranderen
print(ref1.value) // Uitvoer: 20
print(ref2.value) // Uitvoer: 20

// Voorbeeld van een waardetype (structuur)
struct ValueType {
    var value: Int
}

var val1 = ValueType(value: 10)
var val2 = val1 // De gegevens worden gekopieerd
val2.value = 20 // Alleen de gegevens in val2 veranderen
print(val1.value) // Uitvoer: 10
print(val2.value) // Uitvoer: 20