Sobes.tech
Junior — Middle

Kann man in Swift Klassen Methoden deklarieren, die den Zustand der Objekte ändern?

sobes.tech KI

Antwort von AI

In Swift werden Methoden, die den Zustand eines Objekts ändern, mit dem Schlüsselwort mutating deklariert, aber das gilt nur für Strukturen und Aufzählungen (Werttypen). Für Klassen (Referenztypen) können Methoden standardmäßig die Eigenschaften der Instanz ändern, ohne ein zusätzliches Schlüsselwort.

Das heißt:

  • In Klassen können Methoden deklariert werden, die den Zustand des Objekts ändern, ohne mutating.
  • In Strukturen und Aufzählungen müssen Methoden, die Eigenschaften ändern, als mutating gekennzeichnet werden.

Beispiel einer Klasse mit einer ändernden Methode:

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

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

Beispiel einer Struktur mit mutating-Methode:

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

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