Sobes.tech
Junior

Swift proqramlaşdırma dilində siniflər və strukturlar arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Siniflər referans tipləridir, strukturlar isə dəyər tipləridir.

Əsas fərqlər:

  • İrsi alınma: Siniflər irsi alınmanı dəstəkləyir, strukturlar isə yox.
  • Türün çevrilməsi: Bu, sinif nümunəsinin növünü işləmə vaxtında yoxlamağa və şərh etməyə imkan verir.
  • Deinitialization: Siniflər resursları sərbəst buraxmaq üçün deinit destruktorlarına malikdir, strukturlar yox.
  • İstinad sayımı: Siniflər yaddaş idarəetməsi üçün avtomatik istinad sayımı (ARC) istifadə edir. Strukturlar ötürülmə və ya təyin etmə zamanı kopyalanır (optimizasiya üçün copy-on-write tətbiq oluna bilər).
  • Mutating metodlar: Struktura və ya enum nümunəsinin xüsusiyyətlərini dəyişdirən metodlar mutating açar sözü ilə işarələnməlidir. Siniflər üçün bu lazım deyil.

Yaradıcılıq nümunəsi:

// Struktura
struct Point {
    var x: Int
    var y: Int
}

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

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

Təyin etmə zamanı davranış nümunəsi:

// Struktura
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Nüsxə yaradılır
point2.x = 10

print(point1.x) // Çıxış: 1

// Sinif
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // İstinad təyini
circle2.radius = 10.0

print(circle1.radius) // Çıxış: 10.0