Sobes.tech
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"

Аз ин рӯ, интихоби байни структура ва синф ба талаботи семантикаи додаҳо ва ниёз ба мутаҳаррикӣ вобаста аст.