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