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.