Sobes.tech
Junior — Middle

Kādi ir atšķirības, kopējot datus vērtības un atsauces tipus?

sobes.tech AI

Atbilde no AI

Vērtību tipi (value types) un atsauces tipi (reference types) atšķiras pēc datu kopēšanas veida:

  • Vērtību tipi: kopēšanas laikā tiek izveidota pilnīgi neatkarīga datu kopija. Izmaiņas kopijā neietekmē oriģinālu.
  • Atsauces tipi: kopēšanas laikā tiek kopēta atsauce uz to pašu objektu atmiņā. Izmaiņas caur vienu atsauci tiek attēlotas visās.

Piemēram, iOS struktūras (struct) ir vērtību tipi, bet klases (class) ir atsauces tipi.

Swift piemērs:

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 — neatkarīgas kopijas

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

var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
// person1.name == "Пётр" — abas atsauces uz to pašu objektu