Sobes.tech
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) // "Пётр" — հղում նույն օբյեկտին

Հասկանալ տարբերությունը կարևոր է հիշողության կառավարման և օբյեկտների վարքագծի համար ծրագրում։