Sobes.tech
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 — и двете променливи сочат към един и същи обект