Junior — Middle
Je možné v jazyku Swift deklarovať metódy, ktoré menia stav objektov v triedach?
sobes.tech AI
Odpoveď od AI
V Swift, metódy, ktoré menia stav objektu, sú deklarované kľúčovým slovom mutating, ale to platí iba pre štruktúry a enumerácie (typy hodnoty). Pre triedy (referenčné typy) môžu metódy štandardne meniť vlastnosti inštancie bez ďalšieho kľúčového slova.
To znamená:
- V triedach je možné deklarovať metódy, ktoré menia stav objektu bez
mutating. - V štruktúrach a enumeráciách musia byť metódy, ktoré menia vlastnosti, označené ako
mutating.
Príklad triedy s meniacou metódou:
class Counter {
var count = 0
func increment() {
count += 1
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 1
Príklad štruktúry s mutating metódou:
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var counter = Counter()
counter.increment()
print(counter.count) // 1