Junior — Middle
Czy można deklarować metody zmieniające stan obiektów w klasach w języku Swift?
sobes.tech AI
Odpowiedź od AI
W Swift, metody, które zmieniają stan obiektu, deklaruje się słowem kluczowym mutating, ale dotyczy to tylko struktur i wyliczeń (typów wartościowych). Dla klas (typów referencyjnych) metody domyślnie mogą modyfikować właściwości instancji bez dodatkowego słowa kluczowego.
Czyli:
- W klasach można deklarować metody, które zmieniają stan obiektu bez
mutating. - W strukturach i wyliczeniach metody zmieniające właściwości muszą być oznaczone jako
mutating.
Przykład klasy z metodą modyfikującą:
class Counter {
var count = 0
func increment() {
count += 1
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 1
Przykład struktury z metodą mutating:
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var counter = Counter()
counter.increment()
print(counter.count) // 1