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