Sobes.tech
Junior — Middle

Kokios yra duomenų tipų skirtumai jų semantikoje: reikšmės ir nuorodos?

sobes.tech AI

Atsakymas iš AI

Duomenų tipai pagal semantiką skirstomi į reikšmės tipus (value types) ir nuorodų tipus (reference types).

  • Reikšmės tipai saugo duomenis tiesiogiai. Priskyrus ar perduodant funkcijai, kopijuojama pati reikšmė. iOS (Swift) pavyzdžiai: Int, Double, Bool, struktūros (struct).

  • Nuorodų tipai saugo nuorodą į atminties sritį, kur yra duomenys. Priskyrus, kopijuojama nuoroda, ne duomenys. Pakeitimai per vieną nuorodą matomi ir kitur. Swift tai klasės (class), objektai.

Pavyzdys:

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 — kopija nepasikeitė

var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
print(person1.name) // "Пётр" — nuoroda į tą patį objektą

Svarbu suprasti skirtumą, norint valdyti atmintį ir elgseną objektų programoje.