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) |