Sobes.tech
Junior — Middle

Kokios yra skirtumai kopijuojant duomenis tarp reikšmės ir nuorodos tipų?

sobes.tech AI

Atsakymas iš AI

Vertės tipai (value types) ir nuorodos tipai (reference types) skiriasi tuo, kaip atliekamas duomenų kopijavimas:

  • Vertės tipai: kopijavimo metu sukuriama visiškai nepriklausoma duomenų kopija. Pakeitimai kopijoje neveikia originalo.
  • Nuorodos tipai: kopijavimo metu kopijuojama nuoroda į tą patį objektą atmintyje. Pakeitimai per vieną nuorodą atsispindi visuose.

Pavyzdžiui, iOS, struktūros (struct) yra vertės tipai, o klasės (class) – nuorodos tipai.

Swift pavyzdys:

struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
// p1.x == 0, p2.x == 10 — nepriklausomos kopijos

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

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