Junior — Middle
Ar galima Swift kalboje klasėse deklaruoti metodus, kurie keičia objektų būseną?
sobes.tech AI
Atsakymas iš AI
Swift'e, metodai, kurie keičia objekto būseną, deklaruojami su raktiniu žodžiu mutating, tačiau tai taikoma tik struktūroms ir enumeracijoms (reikšmės tipams). Klasės (nuorodų tipai) pagal numatytuosius nustatymus gali keisti instancijos savybes be papildomo raktinio žodžio.
Tai reiškia:
- Klasėse galima deklaruoti metodus, kurie keičia objekto būseną, be
mutating. - Struktūrose ir enumeracijose, metodai, keičiantys savybes, turi būti pažymėti kaip
mutating.
Pavyzdys klasės su keičiančiu metodu:
class Counter {
var count = 0
func increment() {
count += 1
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 1
Pavyzdys struktūros su mutating metodu:
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var counter = Counter()
counter.increment()
print(counter.count) // 1