Sobes.tech
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 deinit destruktorid 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