Sobes.tech
Middle

Dəyər tipi (value type) referans tipi (reference type) ilə əlaqəli olduqda, bu nə deməkdir?

sobes.tech Süni İntellekt

AI-dan cavab

Dəyər tipi təyin etmə və ya funksiyaya ötürülərkən kopyalanır, referans tipi isə referans vasitəsilə ötürülür, yəni mövcud nümunəyə işarə edən göstərici kopyalanır.

Dəyər Növləri (Value Types):

  • Struktur (struct)
  • Enum (enum)
  • Tuple (tuple)
  • Əksər əsas tiplər (Int, String, Bool, Array, Dictionary, Set və s.)
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p1-in dəyəri p2-yə kopyalanır
p2.x = 10

// p1.x hələ də 1, p2.x isə 10 oldu
print("p1: \(p1.x)")
print("p2: \(p2.x)")

Referans Növləri (Reference Types):

  • Siniflər (class)
  • Funksiyalar (closure)
class Coordinate {
    var x: Int
    var y: Int

    init(x: Int, y: Int) {
        self.x = x
        self.y = y
    }
}

var c1 = Coordinate(x: 1, y: 2)
var c2 = c1 // c2 eyni nümunəyə istinad edir
c2.x = 10

// c1.x də 10 oldu
print("c1: \(c1.x)")
print("c2: \(c2.x)")

Əsas fərqlər:

Xüsusiyyət Dəyər Növü (Value Type) Referans Növü (Reference Type)
Təyin etmə Dəyərin kopyası Referansın (göstəricinin) kopyası
Yaddaş Yığımda ayrılır (sadə hallarda) Yığımda ayrılır
Paylaşım Hər dəyişən öz nüsxəsinə malikdir Bir neçə dəyişən eyni nümunəyə istinad edə bilər
Dəyişiklik Dəyişiklik üçün nüsxəni dəyişmək lazımdır Bir referans vasitəsilə edilən dəyişikliklər hamıya görünür

iOS inkişafında hər iki tip geniş istifadə olunur. Onların fərqlərini bilmək, hər vəzifə üçün uyğun tipi seçməyə və istənməyən yan təsirləri qarşısını almağa imkan verir, xüsusən də dəyişkən məlumatlarla işləyərkən.