Sobes.tech
Junior

Каква е разликата между класове и структури в езика за програмиране Swift?

sobes.tech AI

Отговор от AI

Класовете са типове за референция, структурите са типове за стойност.

Основни разлики:

  • Наследяване: Класовете поддържат наследяване, структурите не.
  • Типово преобразуване: Позволява проверка и интерпретиране на типа на инстанция на клас по време на изпълнение.
  • Деинциализация: Класовете имат деструктори (deinit) за освобождаване на ресурси, структурите не.
  • Брояч на референции: Класовете използват автоматичен брояч на референции (ARC) за управление на паметта. Структурите се копират при предаване или присвояване (може да се използва copy-on-write за оптимизация).
  • Мутиращи методи: Методи, които променят свойствата на инстанция на структура или енумерация, трябва да бъдат маркирани с ключовата дума 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