Junior
Τι σημαίνει αν οριστεί ένας setter για μια μεταβλητή;
sobes.tech AI
Απάντηση από AI
Ένας setter (οριστής) είναι μια μέθοδος που επιτρέπει τον έλεγχο της εγγραφής μιας νέας τιμής σε μια μεταβλητή. Κατά τον ορισμό ενός setter, ο τυπικός μηχανισμός ανάθεσης τιμής αντικαθίσταται από κώδικα μέσα στον setter. Αυτό δίνει τη δυνατότητα:
- Επικύρωση των εισερχόμενων δεδομένων: Έλεγχος αν η νέα τιμή πληροί τις καθορισμένες προϋποθέσεις πριν την αναθέσετε στη μεταβλητή.
var age: Int = 0 { didSet { // Το didSet (μετά την ανάθεση) καλείται μετά την ανάθεση if age < 0 { age = 0 // Δεν επιτρέπουμε αρνητικές τιμές } } } - Εκτέλεση πρόσθετων ενεργειών: Εκτέλεση άλλου κώδικα όταν αλλάζει η τιμή της μεταβλητής, π.χ., ενημέρωση του χρήστη ή ειδοποίηση άλλων τμημάτων της εφαρμογής.
var score: Int = 0 { didSet { // Το didSet print("Ενημερώθηκε το σκορ σε \(score)") // Καταγραφή της αλλαγής updateUI() // Ενημέρωση του UI } } func updateUI() { // Κώδικας για ενημέρωση του περιβάλλοντος χρήστη } - Υπολογισμός τιμών άλλων ιδιοτήτων: Η αλλαγή μιας ιδιότητας μπορεί να επηρεάσει την τιμή μιας άλλης.
var radius: Double = 0.0 { didSet { // Το didSet area = Double.pi * radius * radius // Υπολογισμός εκ νέου της επιφάνειας } } var area: Double = 0.0 // Ιδιοιότητα που εξαρτάται από το radius
Οι setter στη Swift μπορούν να χρησιμοποιηθούν για αποθηκευμένες και υπολογιζόμενες ιδιότητες. Για αποθηκευμένες ιδιότητες, συχνά χρησιμοποιούνται παρατηρητές ιδιοτήτων (willSet και didSet), που καλούνται πριν και μετά την ανάθεση νέας τιμής, αντίστοιχα. Για υπολογιζόμενες ιδιότητες, ο setter (set) ορίζει πώς πρέπει να ανατεθεί η τιμή.
var myProperty: String {
// Getter
get {
return "Η τιμή είναι: \(internalValue)"
}
// Setter
set(newValue) {
internalValue = newValue + " επεξεργασμένο" // Τροποποίηση της ανατεθειμένης τιμής
}
}
private var internalValue: String = "" // Εσωτερική αποθηκευμένη ιδιότητα