Junior
Mis vahe on klasside ja struktuuride vahel Swift programmeerimiskeeles?
sobes.tech AI
Vastus AI-lt
Klassid on viite tüübid, struktuurid on väärtusetüübid.
Peamised erinevused:
- Pärimine: Klassid toetavad pärimist, struktuurid mitte.
- Tüübi ümberkujundamine: võimaldab kontrollida ja tõlgendada klassi eksemplari tüüpi jooksvalt.
- Deinitialization: Klassidel on
deinitdestruktorid ressursside vabastamiseks, struktuuridel mitte. - Mälu arvutamine: Klassid kasutavad automaatset viidete arvestust (ARC) mälu haldamiseks. Struktuurid kopeeritakse edastamisel või määramisel (võib kasutada copy-on-write optimeerimiseks).
- Mutating meetodid: Meetodid, mis muudavad struktuuri või enum eksemplari omadusi, peavad olema märgitud
mutating. Klassidele see ei ole vajalik.
Näide loomise kohta:
// Struktuur
struct Point {
var x: Int
var y: Int
}
// Klass
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Näide käitumisest määramisel:
// Struktuur
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Koopia
point2.x = 10
print(point1.x) // Väljund: 1
// Klass
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Viide
circle2.radius = 10.0
print(circle1.radius) // Väljund: 10.0