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ýčtyenum, 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.