Junior — Middle
Ի՞նչ տարբերություններ կան տվյալների տեսակների միջև նրանց սիմանտիկայի առումով՝ արժեքներ և հղումներ։
sobes.tech AI
Պատասխան AI-ից
Տվյալների տեսակները սիմանտիկայով բաժանվում են արժեքային տեսակների (value types) և հղման տեսակների (reference types):
-
Արժեքային տեսակները պահում են տվյալները անմիջապես: Երբ նշանակվում կամ փոխանցվում է ֆունկցիային, պատճենվում է հենց արժեքը: iOS (Swift)-ում օրինակներ են
Int,Double,Bool, կառուցվածքներ (struct): -
Հղման տեսակները պահում են հղում դեպի հիշողության տարածք, որտեղ գտնվում են տվյալները: Երբ նշանակվում է, պատճենվում է հղումը, ոչ թե տվյալները: Փոփոխությունները մեկ հղումով տեսանելի են մյուսների համար: Swift-ում դա դասեր (
class), օբյեկտներ են:
Օրինակ՝
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name } }
var p1 = Point(x: 1, y: 2)
var p2 = p1
p2.x = 10
print(p1.x) // 1 — պատճենը չի փոխվել
var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
print(person1.name) // "Пётр" — հղում նույն օբյեկտին
Հասկանալ տարբերությունը կարևոր է հիշողության կառավարման և օբյեկտների վարքագծի համար ծրագրում։