Sobes.tech
Junior — Middle

პროგრამირებაში მნიშვნელობის ტიპებსა და მიმთითვლების ტიპებს შორის რა განსხვავებაა?

sobes.tech AI

პასუხი AI-სგან

ღირებულების ტიპები (value types) და მითითების ტიპები (reference types) განსხვავდებიან მონაცემების შენახვისა და გადაცემის მეთოდით.

  • ღირებულების ტიპები პირდაპირ ინახება ცვლადის მეხსიერებაში. გადაცემის ან მინიჭების დროს, თავად მნიშვნელობა იკოპირებს. კოპიაში განხორციელებული ცვლილებები არ ზემოქმედებს ორიგინალზე. Swift-ში, ღირებულების ტიპებს მიეკუთვნებიან სტრუქტურები (struct), enum-ები (enum) და ტუპლები (tuples).

  • მითითების ტიპები ინახება heap-ზე, და ცვლადი შეიცავს ობიექტის მითითებას. გადაცემის დროს, იკოპირებს მხოლოდ მითითებას, არა ობიექტს. ერთ მითითებაზე განხორციელებული ცვლილებები აისახება ყველა მითითებაზე. Swift-ში, ეს კლასებია (class).

მაგალითი:

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 — ნუსხა არ შეიცვალა

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — ორივე ცვლადი ერთ ობიექტს მიუთითებს