Sobes.tech
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