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 — ორივე ცვლადი ერთ ობიექტს მიუთითებს