Swift Academy · Les

Het sleutelwoord mutating

Schrijf methoden die de toestand van structs en enums wijzigen.

Les 2 van 413 stappen

Het sleutelwoord mutating is een gratis Swift Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.

Methoden kunnen standaard niet wijzigen

Een instantiemethode van een struct kan de opgeslagen eigenschappen van de struct niet wijzigen, tenzij de methode is gemarkeerd met mutating.

struct Counter {
    var value = 0
    mutating func increment() {
        value += 1
    }
}
var c = Counter()
c.increment()
print(c.value)

Waarom mutating nodig is

Omdat structs waardetypen zijn, vereist de compiler dat je expliciet kiest voor mutatie, zodat de wijziging duidelijk is.

struct Bank {
    var balance = 0
    mutating func deposit(_ amount: Int) {
        balance += amount
    }
}
var b = Bank()
b.deposit(50)
print(b.balance)

Niet-mutaterende methoden

Een methode die alleen eigenschappen leest, heeft geen mutating nodig.

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 bij enum

Enums kunnen ook mutating-methoden hebben die het exemplaar naar een andere case omschakelen.

enum Light {
    case on, off
    mutating func toggle() {
        self = (self == .on) ? .off : .on
    }
}
var l = Light.off
l.toggle()
print(l)

Kan niet op let worden aangeroepen

Je kunt een mutating-methode niet aanroepen op een constante (let)-instantie; dit veroorzaakt een compilatiefout.

struct Counter {
    var value = 0
    mutating func bump() { value += 1 }
}
var c = Counter()
c.bump()
// let d = Counter(); d.bump() // error
print(c.value)

Meerdere eigenschappen wijzigen

Met één mutating-methode kun je meerdere eigenschappen tegelijk wijzigen.

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 met een retourwaarde

Een mutating-methode kan ook een waarde retourneren terwijl deze de status wijzigt.

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)

Gebruik van mutating in de standaardbibliotheek

Methoden zoals append op Array zijn mutating. Daarom heb je een var-array nodig om ze aan te roepen.

var nums = [1, 2]
nums.append(3)
print(nums)

mutating en afgeleide status

Je kunt afgeleide status binnen een mutating-methode bijwerken, zodat invarianten consistent blijven.

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)

Volgorde is belangrijk

Instructies binnen een mutating-methode worden van boven naar beneden uitgevoerd, zodat latere regels eerdere wijzigingen zien.

struct Accumulator {
    var total = 0
    mutating func process() {
        total += 1
        total *= 10
    }
}
var a = Accumulator()
a.process()
print(a.total)

Klassen hebben geen mutating nodig

Referentietypen (class) kunnen eigenschappen zonder dit trefwoord wijzigen, omdat ze geen waardetypen zijn.

class Box {
    var value = 0
    func bump() { value += 1 }
}
let box = Box()
box.bump()
print(box.value)

Korte toets

Toets het trefwoord mutating.

Samenvatting

Markeer een struct- of enum-exemplaarmethode als mutating wanneer deze opgeslagen eigenschappen wijzigt of, bij enums, van case wisselt. Je kunt zulke methoden niet aanroepen op let-exemplaren. Klassen hebben het nooit nodig, omdat het referentietypen zijn.

struct C { var v = 0; mutating func inc() { v += 1 } }
var c = C()
c.inc()
print(c.v)
Gratis beginnen

Leer Swift met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
122
Lessen
409

Veelgestelde vragen

Is de les “Het sleutelwoord mutating” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Het sleutelwoord mutating”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.

Wat leer ik in “Het sleutelwoord mutating”?

Schrijf methoden die de toestand van structs en enums wijzigen. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Swift Academy te beginnen?

Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Het sleutelwoord mutating”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Swift Academy?

Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Waardetypen en onveranderlijkheid
  2. Het sleutelwoord mutating
  3. Mutatie en self opnieuw toewijzen
  4. Niet-muterende alternatieven
← Terug naar Swift Academy