Sobes.tech
Junior — Middle

Kun je methoden declareren die de toestand van objecten wijzigen in Swift-klassen?

sobes.tech AI

Antwoord van AI

In Swift worden methoden die de toestand van een object wijzigen, gedeclareerd met het sleutelwoord mutating, maar dit geldt alleen voor structs en enumeraties (waarde types). Voor classes (referentie types) kunnen methoden standaard de eigenschappen van het instantie wijzigen zonder een extra sleutelwoord.

Dat betekent:

  • In classes kunnen methoden worden gedeclareerd die de toestand van het object wijzigen zonder mutating.
  • In structs en enumeraties moeten methoden die eigenschappen wijzigen, worden gemarkeerd als mutating.

Voorbeeld van een class met een wijzigende methode:

class Counter {
    var count = 0
    func increment() {
        count += 1
    }
}

let counter = Counter()
counter.increment()
print(counter.count) // 1

Voorbeeld van een struct met een mutating-methode:

struct Counter {
    var count = 0
    mutating func increment() {
        count += 1
    }
}

var counter = Counter()
counter.increment()
print(counter.count) // 1