Sobes.tech
Junior — Middle

Proqramlaşdırmada dəyər tipləri və referans tipləri arasında nə fərqlər var?

sobes.tech Süni İntellekt

AI-dan cavab

Dəyər növləri (value types) və referans növləri (reference types) məlumatların saxlanması və ötürülməsi üsulunda fərqlənir.

  • Dəyər növləri dəyişən yaddaşında birbaşa saxlanılır. Təyin və ya ötürmə zamanı, öz dəyəri kopyalanır. Kopya üzərində edilən dəyişikliklər orijinalı təsir etmir. Swift-də dəyər növlərinə strukturlar (struct), enum-lər (enum) və tuple-lər daxildir.

  • Referans növləri yığma yaddaşda saxlanılır və dəyişən obyektə referansı ehtiva edir. Təyin zamanı, yalnız referans kopyalanır, obyekt deyil. Bir referans vasitəsilə edilən dəyişikliklər bütün referanslarda əks olunur. Swift-də bunlar siniflər (class) ilə təmsil olunur.

Misal:

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 — nüsxə dəyişməyib

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — hər iki dəyişən eyni obyektə referans edir