Het sleutelwoord mutating
Schrijf methoden die de toestand van structs en enums wijzigen.
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)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
- Waardetypen en onveranderlijkheid
- Het sleutelwoord mutating
- Mutatie en self opnieuw toewijzen
- Niet-muterende alternatieven