Das Schlüsselwort mutating
Schreiben Sie Methoden, die den Zustand von Structs und Enums ändern.
Das Schlüsselwort mutating ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Methoden können standardmäßig nichts ändern
Eine Instanzmethode eines struct kann die gespeicherten Eigenschaften der Struktur nicht ändern, sofern sie nicht als mutating markiert ist.
struct Counter {
var value = 0
mutating func increment() {
value += 1
}
}
var c = Counter()
c.increment()
print(c.value)Warum Mutation erforderlich ist
Da structs Werttypen sind, verlangt der Compiler, dass Sie sich ausdrücklich für eine Mutation entscheiden, damit die Änderung eindeutig ist.
struct Bank {
var balance = 0
mutating func deposit(_ amount: Int) {
balance += amount
}
}
var b = Bank()
b.deposit(50)
print(b.balance)Nicht mutierende Methoden
Eine Methode, die Eigenschaften nur liest, benötigt kein mutating.
struct Rectangle {
var width = 0
var height = 0
func area() -> Int {
return width * height
}
}
let r = Rectangle(width: 3, height: 4)
print(r.area())mutating bei enum
Enums können ebenfalls mutating-Methoden enthalten, die die Instanz in einen anderen Fall wechseln.
enum Light {
case on, off
mutating func toggle() {
self = (self == .on) ? .off : .on
}
}
var l = Light.off
l.toggle()
print(l)Nicht auf let aufrufbar
Sie können eine mutating-Methode nicht auf einer Konstanteninstanz (let) aufrufen. Das führt zu einem Kompilierfehler.
struct Counter {
var value = 0
mutating func bump() { value += 1 }
}
var c = Counter()
c.bump()
// let d = Counter(); d.bump() // error
print(c.value)Mehrere Eigenschaften ändern
Eine einzelne mutating-Methode kann mehrere Eigenschaften gleichzeitig ändern.
struct Player {
var x = 0
var y = 0
mutating func move(dx: Int, dy: Int) {
x += dx
y += dy
}
}
var p = Player()
p.move(dx: 3, dy: 5)
print(p.x, p.y)mutating mit Rückgabewert
Eine mutating-Methode kann beim Ändern des Zustands auch einen Wert zurückgeben.
struct Stack {
var items: [Int] = []
mutating func pop() -> Int? {
return items.popLast()
}
}
var s = Stack(items: [1, 2, 3])
print(s.pop() ?? -1)
print(s.items)Verwendung von mutating in der Standardbibliothek
Methoden wie append auf Array sind mutating. Deshalb benötigen Sie ein var-Array, um sie aufzurufen.
var nums = [1, 2]
nums.append(3)
print(nums)mutating und berechneter Zustand
Sie können abgeleiteten Zustand innerhalb einer mutierenden Methode aktualisieren und so die Invarianten konsistent halten.
struct Wallet {
var coins = 0
var label = "empty"
mutating func add(_ n: Int) {
coins += n
label = coins > 0 ? "has coins" : "empty"
}
}
var w = Wallet()
w.add(5)
print(w.coins, w.label)Die Reihenfolge ist wichtig
Anweisungen innerhalb einer mutierenden Methode werden von oben nach unten ausgeführt, sodass spätere Zeilen die vorherigen Änderungen sehen.
struct Accumulator {
var total = 0
mutating func process() {
total += 1
total *= 10
}
}
var a = Accumulator()
a.process()
print(a.total)Für Klassen ist mutating nicht erforderlich
Referenztypen (class) können Eigenschaften ohne dieses Schlüsselwort ändern, da sie keine Werttypen sind.
class Box {
var value = 0
func bump() { value += 1 }
}
let box = Box()
box.bump()
print(box.value)Kurzer Test
Testen Sie das Schlüsselwort mutating.
Zusammenfassung
Markieren Sie eine Instanzmethode von struct oder enum mit mutating, wenn sie gespeicherte Eigenschaften ändert oder bei einem enum den Fall wechselt. Solche Methoden können nicht auf let-Instanzen aufgerufen werden. Klassen als Referenztypen benötigen dieses Schlüsselwort nie.
struct C { var v = 0; mutating func inc() { v += 1 } }
var c = C()
c.inc()
print(c.v)Häufig gestellte Fragen
Ist die Lektion „Das Schlüsselwort mutating“ kostenlos?
Ja — der vollständige Text von „Das Schlüsselwort mutating“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Das Schlüsselwort mutating“?
Schreiben Sie Methoden, die den Zustand von Structs und Enums ändern. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Das Schlüsselwort mutating“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Wertetypen und Unveränderlichkeit
- Das Schlüsselwort mutating
- Mutating und Neuzuweisung von self
- Nicht mutierende Alternativen