Sobes.tech
Junior

Swift программалоо тилинде класстар менен структуралардын айырмасы эмнеде?

sobes.tech AI

AIден жооп

Синфтер — шилтемелердин түрү, түзүмдөр — баалуулук түрү.

Негизги айырмачылыктар:

  • Мурас алуу: Синфтер мурас алууну колдойт, түзүмдөр — жок.
  • Түрдү түрмөлөө: Бул, синфтин үлгүсүнүн түрүн ишке ашырганда текшерүүгө жана түшүнүүгө мүмкүндүк берет.
  • Деинициализация: Синфтер deinit деп аталган жоготуу функциялары менен ресурстарды бошотот, түзүмдөр — жок.
  • Эс тутум саноо: Синфтер автоматтык түрдө эс тутумду башкаруу үчүн ARC колдонушат. Түзүмдөр өткөрүп берүү же белгилөө учурунда көчүрүлөт (копия-ишке киргизүү үчүн колдонулушу мүмкүн).
  • Мутирүүчү методдор: Түзүмдүн же энумерациянын үлгүсүнүн мүнөздөмөлөрүн өзгөрткөн методдор 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