Junior — Middle
Lze v jazyce Swift deklarovat metody, které mění stav objektů ve třídách?
sobes.tech AI
Odpověď od AI
Ve Swiftu jsou metody, které mění stav objektu, deklarovány klíčovým slovem mutating, ale to platí pouze pro struktury a enumerace (hodnotové typy). U tříd (referenční typy) mohou metody standardně měnit vlastnosti instance bez dalšího klíčového slova.
To znamená:
- U tříd lze deklarovat metody, které mění stav objektu, bez
mutating. - U struktur a enumerací musí být metody, které mění vlastnosti, označeny jako
mutating.
Příklad třídy s měnící metodou:
class Counter {
var count = 0
func increment() {
count += 1
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 1
Příklad struktury s mutating metodou:
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var counter = Counter()
counter.increment()
print(counter.count) // 1