Junior — Middle
Kādi ir atšķirības starp vērtību tipiem un atsauces tipiem programmēšanā?
sobes.tech AI
Atbilde no AI
Vērtību tipi (value types) un atsauces tipi (reference types) atšķiras datu glabāšanas un nodošanas veidā.
-
Vērtību tipi tiek glabāti tieši mainīgā atmiņā. Piešķirot vai pārsūtot, kopēta tiek pati vērtība. Izmaiņas kopijā neietekmē oriģinālu. Swift valodā vērtību tipi ietver struktūras (struct), enumus (enum) un tuple.
-
Atsauces tipi tiek glabāti kaudzē, un mainīgais satur atsauci uz objektu. Piešķirot, tiek kopēta tikai atsauce, ne objekts. Izmaiņas caur vienu atsauci atspoguļojas visās atsaucēs. Swift valodā tie ir klases (class).
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: 1, y: 2)
var p2 = p1
p2.x = 10
print(p1.x) // 1 — kopija nav mainījusies
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — abas atsauces norāda uz to pašu objektu