Swift Academy · Lektion

Mutating und Neuzuweisung von self

Ersetzen Sie self vollständig innerhalb einer mutating-Methode.

Lektion 3 von 413 Schritte

Mutating und Neuzuweisung von self ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

self neu zuweisen

Innerhalb einer mutating-Methode dürfen Sie self einen vollständig neuen Wert zuweisen und damit die gesamte Instanz ersetzen.

struct Point {
    var x = 0
    var y = 0
    mutating func reset() {
        self = Point(x: 0, y: 0)
    }
}
var p = Point(x: 3, y: 4)
p.reset()
print(p.x, p.y)

Warum self neu zuweisen

Die Neuzuweisung von self ist hilfreich, wenn sich der neue Zustand leichter als frische Instanz ausdrücken lässt, anstatt die Felder einzeln zu bearbeiten.

struct Vector {
    var dx: Int
    var dy: Int
    mutating func negate() {
        self = Vector(dx: -dx, dy: -dy)
    }
}
var v = Vector(dx: 2, dy: -3)
v.negate()
print(v.dx, v.dy)

self bei Enums neu zuweisen

Bei Enums wechseln Sie den Fall, indem Sie self einen neuen Fall zuweisen.

enum State {
    case idle, running, done
    mutating func advance() {
        switch self {
        case .idle: self = .running
        case .running: self = .done
        case .done: self = .done
        }
    }
}
var s = State.idle
s.advance()
s.advance()
print(s)

Entspricht Änderungen an den Feldern

Die Zuweisung self = Point(x: 1, y: 1) entspricht dem individuellen Setzen von x und y, ist aber kürzer.

struct Point {
    var x = 0
    var y = 0
    mutating func setBoth(_ n: Int) {
        self = Point(x: n, y: n)
    }
}
var p = Point()
p.setBoth(7)
print(p.x, p.y)

Altes self zuerst lesen

Sie können die neue Instanz aus der aktuellen Instanz berechnen, bevor Sie sie neu zuweisen.

struct Counter {
    var value: Int
    mutating func doubled() {
        self = Counter(value: value * 2)
    }
}
var c = Counter(value: 5)
c.doubled()
print(c.value)

Transformation nach dem Builder-Muster

Durch die Neuzuweisung von self kann eine Methode eine vollständige Transformation in einem Schritt ausdrücken.

struct Temperature {
    var celsius: Double
    mutating func toRounded() {
        self = Temperature(celsius: celsius.rounded())
    }
}
var t = Temperature(celsius: 21.7)
t.toRounded()
print(t.celsius)

Nur in mutating-Methoden

Sie können self nur innerhalb einer als mutating markierten Methode zuweisen. Eine normale Methode kann das nicht.

struct Flag {
    var on = false
    mutating func turnOn() {
        self = Flag(on: true)
    }
}
var f = Flag()
f.turnOn()
print(f.on)

Mit Logik kombinieren

Sie können Bedingungen verwenden und self nur in bestimmten Fällen neu zuweisen.

struct Score {
    var points: Int
    mutating func clamp() {
        if points > 100 {
            self = Score(points: 100)
        }
    }
}
var s = Score(points: 150)
s.clamp()
print(s.points)

Enum-Muster zum Umschalten

Ein Enum mit zwei Fällen, zwischen denen umgeschaltet wird, ist ein klassisches Beispiel für die Neuzuweisung von self.

enum Switch {
    case off, on
    mutating func flip() {
        self = (self == .off) ? .on : .off
    }
}
var sw = Switch.off
sw.flip()
print(sw)

Keine Auswirkungen auf andere Kopien

Die Neuzuweisung von self ändert nur diese Instanz. Andere Kopien des Werts bleiben unverändert.

struct Box { var n: Int; mutating func zero() { self = Box(n: 0) } }
var a = Box(n: 5)
var b = a
a.zero()
print(a.n, b.n)

Lesbare Absicht

Verwenden Sie die Neuzuweisung von self, wenn dadurch die Transformation unmittelbar verständlich wird. Wenn sich nur eine Eigenschaft ändert, bearbeiten Sie stattdessen das Feld.

struct Pair {
    var a: Int
    var b: Int
    mutating func swapValues() {
        self = Pair(a: b, b: a)
    }
}
var p = Pair(a: 1, b: 2)
p.swapValues()
print(p.a, p.b)

Kurzer Test

Testen Sie die Neuzuweisung von self.

Zusammenfassung

Innerhalb einer mutating-Methode können Sie self einen vollständig neuen Wert zuweisen und damit die Instanz ersetzen. Das ist für vollständige Transformationen kurz und ermöglicht bei Enums den Wechsel des Falls. Die Änderung betrifft nur diese Instanz, nicht andere Kopien.

enum T { case a, b; mutating func go() { self = .b } }
var t = T.a
t.go()
print(t)
Kostenlos starten

Lerne Swift mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
122
Lektionen
409

Häufig gestellte Fragen

Ist die Lektion „Mutating und Neuzuweisung von self“ kostenlos?

Ja — der vollständige Text von „Mutating und Neuzuweisung von self“ 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 „Mutating und Neuzuweisung von self“?

Ersetzen Sie self vollständig innerhalb einer mutating-Methode. 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 3 von 4.

Wie lange dauert die Lektion „Mutating und Neuzuweisung von self“?

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

  1. Wertetypen und Unveränderlichkeit
  2. Das Schlüsselwort mutating
  3. Mutating und Neuzuweisung von self
  4. Nicht mutierende Alternativen
← Zurück zu Swift Academy