Junior — Middle
Ποια είναι τα διαφορές κατά την αντιγραφή δεδομένων για τύπους τιμών και τύπους αναφοράς;
sobes.tech AI
Απάντηση από AI
Οι τύποι τιμών (value types) και οι τύποι αναφοράς (reference types) διαφέρουν στον τρόπο που γίνεται η αντιγραφή δεδομένων:
- Τύποι τιμών: κατά την αντιγραφή, δημιουργείται ένα πλήρες ανεξάρτητο αντίγραφο των δεδομένων. Οι αλλαγές στο αντίγραφο δεν επηρεάζουν το αρχικό.
- Τύποι αναφοράς: κατά την αντιγραφή, αντιγράφεται η αναφορά στο ίδιο αντικείμενο στη μνήμη. Οι αλλαγές μέσω μιας αναφοράς αντικατοπτρίζονται σε όλες.
Για παράδειγμα, στο iOS, οι δομές (struct) είναι τύποι τιμών, και οι κλάσεις (class) είναι τύποι αναφοράς.
Παράδειγμα σε Swift:
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
// p1.x == 0, p2.x == 10 — ανεξάρτητα αντίγραφα
class Person {
var name: String
init(name: String) { self.name = name }
}
var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
// person1.name == "Пётр" — και οι δύο αναφορές στο ίδιο αντικείμενο