Sobes.tech
Junior — Middle

Jaké jsou rozdíly při kopírování dat pro hodnotové a referenční typy?

sobes.tech AI

Odpověď od AI

Typy hodnot (value types) a typy odkazů (reference types) se liší v tom, jak dochází ke kopírování dat:

  • Typy hodnot: při kopírování se vytvoří úplná nezávislá kopie dat. Změny v kopii neovlivní originál.
  • Typy odkazů: při kopírování se kopíruje odkaz na stejný objekt v paměti. Změny přes odkaz se odrážejí ve všech.

Například v iOS jsou struktury (struct) typy hodnot, třídy (class) jsou typy odkazů.

Příklad v Swift:

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 — nezávislé kopie

class Person {
    var jméno: String
    init(jméno: String) { self.jméno = jméno }
}

var osoba1 = Person(jméno: "Иван")
var osoba2 = osoba1
osoba2.jméno = "Пётр"
// osoba1.jméno == "Пётр" — obě reference na stejný objekt