Sobes.tech
Junior

Kāda ir atšķirība starp klasēm un struktūrām Swift programmēšanas valodā?

sobes.tech AI

Atbilde no AI

Klases ir ir struktūras ir ir vērtību tipus.

Galvenās atšķirības:

  • Mantošana: Klases atbalsta mantošanu, struktūras — nē.
  • Veida pārveidošana: ļauj pārbaudīt un interpretēt klases piemēra tipu izpildes laikā.
  • Deinitialization: Klases ir deinit destruktori resursu atbrīvošanai, struktūras — nē.
  • Atmiņas skaitīšana: Klases izmanto automātisko atsauču skaitīšanu (ARC) atmiņas pārvaldībai. Struktūras tiek kopētas, pārsūtot vai piešķirot (var tikt izmantots copy-on-write optimizācijai).
  • Mutējošas metodes: Metodes, kas maina struktūras vai enum piemēra īpašības, jāmarķē ar mutating. Klases tam nav nepieciešams.

Piemērs izveidei:

// Struktūra
struct Point {
    var x: Int
    var y: Int
}

// Klase
class Circle {
    var radius: Double
    var center: Point

    init(radius: Double, center: Point) {
        self.radius = radius
        self.center = center
    }
}

Uzdevuma piemērs piešķiršanas laikā:

// Struktūra
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Kopija
point2.x = 10

print(point1.x) // Izvade: 1

// Klase
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Atsauces piešķiršana
circle2.radius = 10.0

print(circle1.radius) // Izvade: 10.0