Junior — Middle
Μπορούν να δηλωθούν μέθοδοι που αλλάζουν την κατάσταση των αντικειμένων σε κλάσεις στη Swift;
sobes.tech AI
Απάντηση από AI
Στο Swift, οι μέθοδοι που αλλάζουν την κατάσταση ενός αντικειμένου δηλώνονται με τη λέξη-κλειδί mutating, αλλά αυτό ισχύει μόνο για δομές και enumerations (τύπους αξίας). Για τις κλάσεις (τύπους αναφοράς), οι μέθοδοι μπορούν προεπιλεγμένα να αλλάζουν τις ιδιότητες του στιγμιότυπου χωρίς επιπλέον λέξη-κλειδί.
Δηλαδή:
- Στις κλάσεις, μπορούν να δηλωθούν μέθοδοι που αλλάζουν την κατάσταση του αντικειμένου χωρίς
mutating. - Στις δομές και enumerations, οι μέθοδοι που αλλάζουν ιδιότητες πρέπει να σημειώνονται ως
mutating.
Παράδειγμα κλάσης με μεταβαλλόμενη μέθοδο:
class Counter {
var count = 0
func increment() {
count += 1
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 1
Παράδειγμα δομής με mutating μέθοδο:
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var counter = Counter()
counter.increment()
print(counter.count) // 1