Sobes.tech
Junior

Swift პროგრამირების ენაში კლასებისა და სტრუქტურების განსხვავება რა არის?

sobes.tech AI

პასუხი AI-სგან

კლასები არის მიმთითებლური ტიპები, სტრუქტურები — მნიშვნელობის ტიპები.

ძირითადი განსხვავებები:

  • მემკვიდრეობა: კლასები მხარს უჭერენ მემკვიდრეობას, სტრუქტურები — არა.
  • ტიპის გადაყვანა: საშუალებას იძლევა დაადასტუროს და ინტერპრეტირება მოახდინოს კლასის მაგალითის ტიპი შესრულების დროს.
  • Deinitialization: კლასებს აქვთ deinit დესტრუქტორები რესურსების გასათავისუფლებლად, სტრუქტურებს — არა.
  • მეხსიერების გამოთვლა: კლასები იყენებენ ავტომატურ მითითების გამოთვლას (ARC) მეხსიერების მართვისთვის. სტრუქტურები იწერება გადაცემის ან მინიჭების დროს (შესაძლებელია copy-on-write ოპტიმიზაციისთვის).
  • Mutating მეთოდები: მეთოდები, რომლებიც ცვლიან სტრუქტურის ან enum-ის მაგალითის თვისებებს, უნდა იყოს მონიშნული mutating სიტყვით. კლასებისთვის ეს აუცილებელი არაა.

შექმნის მაგალითი:

// სტრუქტურა
struct Point {
    var x: Int
    var y: Int
}

// კლასი
class Circle {
    var radius: Double
    var center: Point

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

მოწოდების დროს ქცევის მაგალითი:

// სტრუქტურა
var point1 = Point(x: 1, y: 2)
var point2 = point1 // ნუსხა
point2.x = 10

print(point1.x) // გამოტანა: 1

// კლასი
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // მითითების მოწოდება
circle2.radius = 10.0

print(circle1.radius) // გამოტანა: 10.0