Junior — Middle
V čom spočíva rozdiel medzi dátovými typmi odkazov a hodnotami v jazyku Swift?
sobes.tech AI
Odpoveď od AI
V jazyku Swift sa dátové typy rozdelené na hodnotové typy (value types) a referenčné typy (reference types).
-
Hodnotové typy (napríklad štruktúry
struct, výčtyenum, n-tice) sa kopírujú pri priraďovaní alebo odovzdaní do funkcie. To znamená, že každá premenná má svoju vlastnú nezávislú kópiu dát. -
Referenčné typy (triedy
class) pri priraďovaní alebo odovzdaní odovzdávajú odkaz na ten istý objekt v pamäti. Zmeny cez jeden odkaz budú viditeľné aj cez ostatné.
Príklad:
struct Point {
var x: Int
var y: Int
}
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0, pretože p2 je kópia p1
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, pretože obe referencie odkazujú na ten istý objekt
Rozdiel je v tom, že hodnotové typy sa kopírujú, zatiaľ čo referenčné typy odovzdávajú odkaz na ten istý objekt.