Junior
Ի՞նչ է Swift ծրագրավորման լեզվում դասերի և կառուցվածքների տարբերությունը։
sobes.tech AI
Պատասխան AI-ից
Դասերը հղումային տիպեր են, կառուցվածքները՝ արժեքային։
Հիմնական տարբերությունները՝
- Արխայվավորում: Դասերը աջակցում է ժառանգությանը, կառուցվածքները՝ ոչ։
- Տիպի փոխարկում: Позволяет ստուգել և մեկնաբանել դասի օրինակակի տիպը ժամանակի ընթացքում։
- Deinitialization: Դասերը ունեն
deinitդեինիցիալներ՝ ռեսուրսները ազատելու համար, կառուցվածքները՝ ոչ։ - Հիշողության հաշվարկ: Դասերը օգտագործում են ARC՝ ավտոմատ ռեսուրսների հաշվարկ, կառուցվածքները՝ պատճենվում են փոխանցման կամ նշանակման ժամանակ (կարող է կիրառվել copy-on-write օպտիմիզացիայի համար):
- Mutating մեթոդներ: Մեթոդները, որոնք փոփոխում են կառուցվածքի կամ enum-ի օրինակակի հատկությունները, պետք է նշվեն
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