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