Junior — Middle
Могу ли да се објаве методи који мењају стање објеката у класама на Swift-у?
sobes.tech АИ
Одговор од АИ
U Swift-u, metode koji menjaju stanje objekta deklarisani su ključnom reči mutating, ali to važi samo za strukture i enumeracije (tipove vrednosti). Za klase (referentne tipove), metode po default-u mogu menjati svojstva instance bez dodatne ključne reči.
To znači:
- U klasama, moguće je deklarisati metode koje menjaju stanje objekta bez
mutating. - U strukturama i enumeracijama, metode koje menjaju svojstva moraju biti označene kao
mutating.
Primer klase sa metodom koja menja stanje:
class Counter {
var count = 0
func increment() {
count += 1
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 1
Primer strukture sa mutating metodom:
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var counter = Counter()
counter.increment()
print(counter.count) // 1