Sobes.tech
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