Junior — Middle
Какви са разликите между стойностните типове и референтните типове в програмирането?
sobes.tech AI
Отговор от AI
Типовете стойности (value types) и типовете референции (reference types) се различават по начина, по който съхраняват и предават данни.
-
Типовете стойности се съхраняват директно в паметта на променливата. При присвояване или предаване се копира самата стойност. Промените в копието не влияят на оригинала. В Swift, типовете стойности включват структури (struct), изброявания (enum) и кортежи.
-
Типовете референции се съхраняват в купчината, а променливата съдържа препратка към обекта. При присвояване се копира само препратката, не обектът. Промените чрез една препратка се отразяват във всички препратки. В Swift, това са класове (class).
Пример:
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 — копието не се промени
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — и двете променливи сочат към един и същи обект