Junior — Middle
Тафовутҳои асосӣ байни сохтор ва синф дар робита ба маҳдудиятҳо ва имкониятҳо чист?
sobes.tech AI
Ҷавоб аз AI
Фарқи асосӣ байни структура (struct) ва синф (class) дар iOS (Swift) дар он аст, ки структураҳо намудҳои арзишӣ (value types) мебошанд, дар ҳоле ки синфҳо намудҳои истинодӣ (reference types) мебошанд.
Ин маъно дорад:
- Структураҳо ҳангоми таъин кардан ё гузаронидан ба функсия нусхабардорӣ мешаванд, ҳар нусха мустақил аст.
- Синфҳо тавассути истинод гузаронида мешаванд, чандин тағирёбанда метавонанд ба як объект ишора кунанд.
Илова бар ин, синфҳо мутаҳаррикӣ, нобудкунандагон (destructors) доранд ва метавонанд семантикаи истинодро дошта бошанд, дар ҳоле ки структураҳо мутаҳаррикӣ намегузаранд ва нобудкунандагон надоранд.
Масалан:
struct Point {
var x: Int
var y: Int
}
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
// p1.x ҳоло ҳам 0, p2.x = 10
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
// person1.name ва person2.name ҳоло "Bob"
Аз ин рӯ, интихоби байни структура ва синф ба талаботи семантикаи додаҳо ва ниёз ба мутаҳаррикӣ вобаста аст.