Junior — Middle
ყველა მონაცემთა ტიპი, რომელიც მნიშვნელობებს ინახავს, აუცილებელია, რომ კოპირების მექანიზმი გამოიყენოს მინიჭების ან გადაცემის დროს?
sobes.tech AI
პასუხი AI-სგან
ყველა მონაცემის ტიპი არ იყენებს კოპირების მექანიზმს მინიჭების ან გადაცემის დროს. iOS-ზე (და Swift-ში) განასხვავებენ მნიშვნელობის ტიპებს (value types) და მითითების ტიპებს (reference types).
- მნიშვნელობის ტიპები (მაგალითად, სტრუქტურები, enum-ები, ძირითადი ტიპები როგორიცაა Int, Double) კოპირებულია მინიჭების ან გადაცემის დროს — ქმნიან ახალი მონაცემების ასლს.
- მითითების ტიპები (მაგალითად, კლასები) კოპირებენ მხოლოდ ობიექტის მითითებას, არა თავად ობიექტს. ამგვარად, რამდენიმე ცვლადი შეიძლება მიუთითებდეს ერთსა და იმავე ობიექტზე მეხსიერებაში.
Swift-ის მაგალითი:
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name }
}
var p1 = Point(x: 0, y: 0)
var p2 = p1 // მნიშვნელობის კოპირება
p2.x = 10
print(p1.x) // 0
var person1 = Person(name: "Alice")
var person2 = person1 // მითითების კოპირება
person2.name = "Bob"
print(person1.name) // Bob
ამიტომ, კოპირების მექანიზმი გამოიყენება მხოლოდ მნიშვნელობის ტიპებზე, ხოლო მითითების ტიპები იყენებენ მითითების გადაცემას.