Junior — Middle
Kāda ir atšķirība starp atsauces un vērtības datu tipiem Swift valodā?
sobes.tech AI
Atbilde no AI
Swift valodas datu tipus iedala vērtību tipus (value types) un atsauces tipus (reference types).
-
Vērtību tipi (piemēram,
struct,enum, tīkli) tiek kopēti pie piešķiršanas vai nodošanas funkcijai. Tas nozīmē, ka katram mainīgajam ir sava neatkarīga datu kopija. -
Atsauces tipi (klases
class) pie piešķiršanas vai nodošanas nodod atsauci uz to pašu objektu atmiņā. Izmaiņas caur vienu atsauci būs redzamas arī caur citas.
Piemērs:
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, jo p2 ir p1 kopija
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, jo abi norāda uz to pašu objektu
Tādējādi atšķirība ir tāda, ka vērtību tipi tiek kopēti, bet atsauces tipi nodod atsauci uz to pašu objektu.