Sobes.tech
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) Τύπος Αναφοράς (κλάση)
Τι αποθηκεύεται στη μεταβλητή Αντίγραφο των δεδομένων του αντικειμένου Αναφορά στο αντικείμενο στη μνήμη
Ανάθεση / Μεταβίβαση Αντίγραφο των δεδομένων Αντίγραφο της αναφοράς (αναφέρεται στο ίδιο αντικείμενο)
Αλλαγή Επηρεάζει μόνο το τρέχον αντίγραφο Επηρεάζει το αντικείμενο στο οποίο δείχνει η αναφορά (μπορεί να επηρεάσει και άλλες μεταβλητές που αναφέρονται στο ίδιο αντικείμενο)