Junior
Τι ακριβώς αποθηκεύει η μεταβλητή όταν δημιουργούμε ένα αντικείμενο τύπου value;
sobes.tech AI
Απάντηση από AI
Όταν δημιουργούμε ένα αντικείμενο τύπου τιμή (δομή, enum, tuple στο Swift), η μεταβλητή αποθηκεύει μια αντίγραφο των δεδομένων αυτού του αντικειμένου απευθείας στη μνήμη. Η ανάθεση ή η μεταβίβαση τέτοιου αντικειμένου ως παράμετρος οδηγεί σε μια αντίγραφο του περιεχομένου του.
Παραδείγματα:
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2) // Η μεταβλητή p1 αποθηκεύει ένα αντίγραφο των δεδομένων (x=1, y=2)
var p2 = p1 // Το p2 λαμβάνει ένα αντίγραφο των δεδομένων του p1. Είναι ανεξάρτητα αντίγραφα.
p1.x = 10 // Μόνο το p1.x αλλάζει
print(p2.x) // Θα εμφανίσει 1, καθώς το p2 δεν άλλαξε
Σύγκριση με τύπο αναφοράς (κλάση):
| Χαρακτηριστικό | Τύπος Τιμής (δομή, enum) | Τύπος Αναφοράς (κλάση) |
|---|---|---|
| Τι αποθηκεύεται στη μεταβλητή | Αντίγραφο των δεδομένων του αντικειμένου | Αναφορά στο αντικείμενο στη μνήμη |
| Ανάθεση / Μεταβίβαση | Αντίγραφο των δεδομένων | Αντίγραφο της αναφοράς (αναφέρεται στο ίδιο αντικείμενο) |
| Αλλαγή | Επηρεάζει μόνο το τρέχον αντίγραφο | Επηρεάζει το αντικείμενο στο οποίο δείχνει η αναφορά (μπορεί να επηρεάσει και άλλες μεταβλητές που αναφέρονται στο ίδιο αντικείμενο) |