Sobes.tech
Junior — Middle

Care sunt diferențele dintre tipurile de valori și tipurile de referință în programare?

sobes.tech AI

Răspuns de la AI

Tipurile de valori (value types) și tipurile de referință (reference types) diferă în modul în care stochează și transmit datele.

  • Tipurile de valori sunt stocate direct în memoria variabilei. La atribuire sau transmitere, se copiază valoarea în sine. Modificările asupra copiei nu afectează originalul. În Swift, tipurile de valori includ structuri (struct), enumerări (enum) și tuple.

  • Tipurile de referință sunt stocate în heap, iar variabila conține o referință la obiect. La atribuire, se copiază doar referința, nu obiectul. Modificările printr-o referință se reflectă în toate referințele. În Swift, acestea sunt clase (class).

Exemplu:

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 — copia nu s-a schimbat

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — ambele variabile fac referire la același obiect