Sobes.tech
Junior — Middle

Se pot declara metode care modifică starea obiectelor în clase în Swift?

sobes.tech AI

Răspuns de la AI

În Swift, metodele care modifică starea unui obiect sunt declarate cu cuvântul cheie mutating, dar acest lucru se aplică doar structurilor și enumerărilor (tipuri de valoare). Pentru clase (tipuri de referință), metodele pot modifica în mod implicit proprietățile instanței fără un cuvânt cheie suplimentar.

Adică:

  • În clase, se pot declara metode care modifică starea obiectului fără mutating.
  • În structuri și enumerări, metodele care modifică proprietățile trebuie marcate ca mutating.

Exemplu de clasă cu o metodă modificatoare:

class Counter {
    var count = 0
    func increment() {
        count += 1
    }
}

let counter = Counter()
counter.increment()
print(counter.count) // 1

Exemplu de structură cu metodă mutating:

struct Counter {
    var count = 0
    mutating func increment() {
        count += 1
    }
}

var counter = Counter()
counter.increment()
print(counter.count) // 1