Sobes.tech
Junior — Middle

Wat is het verschil tussen referentie- en waardegebaseerde datatypes in de Swift-taal?

sobes.tech AI

Antwoord van AI

In Swift worden datatypes onderverdeeld in value types en reference types.

  • Value types (bijvoorbeeld structs, enums, tuples) worden gekopieerd bij toewijzing of doorgeven aan een functie. Dit betekent dat elke variabele een eigen onafhankelijke kopie van de gegevens heeft.

  • Reference types (classes) geven bij toewijzing of doorgeven een verwijzing door naar hetzelfde object in het geheugen. Wijzigingen via één verwijzing zijn zichtbaar via andere.

Voorbeeld:

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, omdat p2 een kopie is van p1

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, omdat person2 en person1 naar hetzelfde object verwijzen

Het verschil is dus dat value types worden gekopieerd, terwijl reference types een verwijzing doorgeven naar hetzelfde object.