Junior
Тафовут байни синфҳо ва структураҳо дар забони барномасозии Swift чист?
sobes.tech AI
Ҷавоб аз AI
Классҳо навъҳои истинодӣ мебошанд, сохторҳо — навъҳои арзишӣ.
Фарқиятҳои асосӣ:
- Наследувӣ: Классҳо наслеҳро дастгирӣ мекунанд, сохторҳо — не.
- Трансформатсияи навъ: Имкон медиҳад, ки навъи намунаи классро дар вақти иҷро санҷида ва фаҳмид.
- Деинициализация: Классҳо дорои
deinitбарои озод кардани захираҳо мебошанд, сохторҳо — не. - Шумораи истинодҳо: Классҳо аз ҳисобкунии автоматии истинодҳо (ARC) барои идоракунии хотира истифода мебаранд. Сохторҳо дар вақти гузариш ё таъин кардан нусхабардорӣ мешаванд (мумкин аст copy-on-write барои оптимизатсия истифода шавад).
- Методҳои мутатаввиқ: Методҳое, ки хусусиятҳои намунаи сохтор ё enumeration-ро тағйир медиҳанд, бояд бо калиди
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