Sobes.tech
Junior

Value növü obyekt yaradarkən dəyişən dəqiq nə saxlayır?

sobes.tech Süni İntellekt

AI-dan cavab

Swift-də dəyər tipi (struktur, enum, tuple) tipli obyekt yaratdıqda, dəyişən bu obyektin nüsxəsini birbaşa yaddaşda saxlayır. Belə bir obyektin təyin olunması və ya parametr kimi ötürülməsi onun məzmununun nüsxəsini yaradır.

Nümunələr:

struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2) // Dəyişən p1, məlumatların nüsxəsini saxlayır (x=1, y=2)
var p2 = p1              // p2, p1-in məlumatlarının nüsxəsini alır. Bunlar müstəqil nüsxələrdir.

p1.x = 10                // Yalnız p1.x dəyişir
print(p2.x)              // 1 göstərəcək, çünki p2 dəyişməyib

İstinad tipi (sinif) ilə müqayisə:

Xüsusiyyət Dəyər Növü (struktur, enum) İstinad Növü (sinif)
Dəyişəndə nə saxlanılır Obyektin məlumatlarının nüsxəsi Yaddaşdakı obyektə istinad
Təyin / Keçid Məlumatların nüsxəsi İstinadın nüsxəsi (eyni obyektə işarə edir)
Dəyişiklik Yalnız cari nüsxəyə təsir edir İstinad etdiyi obyektə təsir edir (başqa dəyişənlərə də təsir edə bilər, onlar da eyni obyektə istinad edir)