Junior
Wat is het verschil tussen klassen en structuren in de programmeertaal Swift?
sobes.tech AI
Antwoord van AI
Klassen zijn referentietypes, structuren zijn waardetypes.
Belangrijkste verschillen:
- Erfenis: Klassen ondersteunen erfenis, structuren niet.
- Type casting: Hiermee kun je het type van een klasse-instantie controleren en interpreteren tijdens runtime.
- Deinitialisatie: Klassen hebben destructors (
deinit) om bronnen vrij te geven, structuren niet. - Referentietelling: Klassen gebruiken automatische referentietelling (ARC) voor geheugenbeheer. Structuren worden gekopieerd bij overdracht of toewijzing (kan copy-on-write gebruiken voor optimalisatie).
- Muterende methoden: Methoden die de eigenschappen van een structuur- of enum-instantie wijzigen, moeten worden gemarkeerd met
mutating. Voor klassen is dit niet nodig.
Voorbeeld van creatie:
// Structuur
struct Point {
var x: Int
var y: Int
}
// Klasse
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Voorbeeld van gedrag bij toewijzing:
// Structuur
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Kopie wordt gemaakt
point2.x = 10
print(point1.x) // Uitvoer: 1
// Klasse
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Referentie toewijzing
circle2.radius = 10.0
print(circle1.radius) // Uitvoer: 10.0