Sobes.tech
Junior — Middle

V čem spočívá rozdíl mezi datovými typy podle odkazu a podle hodnoty v jazyce Swift?

sobes.tech AI

Odpověď od AI

V jazyce Swift jsou datové typy rozděleny na hodnotové typy (value types) a referenční typy (reference types).

  • Hodnotové typy (například struktury struct, výčty enum, n-tice) se při přiřazení nebo předání funkci kopírují. To znamená, že každá proměnná má svou vlastní nezávislou kopii dat.

  • Referenční typy (třídy class) při přiřazení nebo předání předávají odkaz na stejný objekt v paměti. Změny přes jeden odkaz budou viditelné přes jiné.

Příklad:

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

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

var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0, protože p2 je kopie p1

var osoba1 = Person(jmeno: "Alice")
var osoba2 = osoba1
osoba2.jmeno = "Bob"
print(osoba1.jmeno) // Bob, protože oba odkazují na stejný objekt

Rozdíl je tedy v tom, že hodnotové typy se kopírují, zatímco referenční typy předávají odkaz na stejný objekt.