Sobes.tech
Junior — Middle

Kaip atskirti duomenų tipus pagal reikšmę ir nuorodą ir kuo jie skiriasi programavime?

sobes.tech AI

Atsakymas iš AI

Duomenų tipai pagal reikšmę ir pagal nuorodą skiriasi tuo, kaip jie saugomi ir perduodami programoje.

  • Reikšmės tipai (value types) kopijuojami priskyrimo ar perdavimo metu. Kiekviena kintamoji turi savo nepriklausomą duomenų kopiją.
  • Nuorodos tipai (reference types) kopijuoja nuorodą į tą patį objektą atmintyje priskyrimo ar perdavimo metu. Pakeitimai per vieną nuorodą matomi per kitus.

Pavyzdžiui, Swift:

var a = 5
var b = a // kopijuojama reikšmė 5
b = 10
print(a) // 5, nes a ir b yra nepriklausomi

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var p1 = Person(name: "Иван")
var p2 = p1 // kopijuojama nuoroda
p2.name = "Пётр"
print(p1.name) // "Пётр", nes p1 ir p2 nurodo į tą patį objektą

Todėl svarbu suprasti skirtumą, kad būtų galima tinkamai valdyti atmintį ir prognozuoti programos elgesį.