map en compactMap
Transformeer elementen en verwijder nil-waarden.
map en compactMap is een gratis Swift Academy-les op CoddyKit. Dit is les 1 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.
Wat is map?
map is een functie van hogere orde: deze neemt een closure en past die toe op elk element van een reeks. Het resultaat is een nieuwe array met de getransformeerde waarden.
- De oorspronkelijke verzameling wordt nooit gewijzigd
- Het aantal resultaten is altijd gelijk aan het aantal invoerelementen
- Het elementtype kan veranderen, bijvoorbeeld
Int→String
Een eenvoudige map
Verdubbel elk getal in een array:
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]Het elementtype wijzigen
map kan waarden van het type Int omzetten in waarden van het type String:
let ids = [10, 20, 30]
let labels = ids.map { "ID-\($0)" }
print(labels) // ["ID-10", "ID-20", "ID-30"]map met een benoemde functie
Je kunt elke functie met een overeenkomende signatuur doorgeven, niet alleen een trailing closure:
let words = ["swift", "map"]
let upper = words.map { $0.uppercased() }
print(upper) // ["SWIFT", "MAP"]Het probleem dat map niet kan oplossen
map behoudt elk element. Als je transformatie een optionele waarde oplevert, omdat de bewerking kan mislukken, krijg je een array met optionele waarden zoals [Int?] — vol met lege plekken die je later moet filteren.
Precies dat lost compactMap op.
Maak kennis met compactMap
compactMap transformeert elk element en verwijdert elk resultaat dat nil is. Het resultaat is een array zonder optionele waarden:
let raw = ["1", "2", "x", "4"]
let nums = raw.compactMap { Int($0) }
print(nums) // [1, 2, 4] -- "x" was droppedmap en compactMap naast elkaar
Het verschil is of nil-resultaten behouden blijven:
let raw = ["1", "x", "3"]
print(raw.map { Int($0) }) // [Optional(1), nil, Optional(3)]
print(raw.compactMap { Int($0) }) // [1, 3]Optionele waarden uit een verzameling halen
compactMap is de gebruikelijke manier om nil-waarden uit een array met optionele waarden te verwijderen:
let maybe: [Int?] = [1, nil, 3, nil, 5]
let clean = maybe.compactMap { $0 }
print(clean) // [1, 3, 5]Parseren met compactMap
Een veelvoorkomende toepassing uit de praktijk: alleen geldige invoerregels parseren:
let lines = ["42", "", "hello", "7"]
let values = lines.compactMap { Int($0) }
print(values) // [42, 7]
print(values.reduce(0, +)) // 49map en compactMap combineren
Je kunt ze aan elkaar koppelen: gebruik map om gegevens vorm te geven en compactMap om alleen de geslaagde resultaten te behouden:
let scores = ["90", "85", "n/a", "70"]
let passed = scores
.compactMap { Int($0) }
.map { $0 >= 80 ? "pass" : "fail" }
print(passed) // ["pass", "pass", "fail"]compactMap op ketens met optionele waarden
Het werkt ook uitstekend met toegang tot optionele eigenschappen:
struct User { let name: String? }
let users = [User(name: "Ann"), User(name: nil), User(name: "Bo")]
let names = users.compactMap { $0.name }
print(names) // ["Ann", "Bo"]Korte controle
Welke functie transformeert elementen en verwijdert nil-resultaten in één stap?
Samenvatting
Je hebt de twee belangrijkste transformatiefuncties geleerd:
map— elk element transformeren; het aantal resultaten is gelijk aan het aantal invoerelementencompactMap— transformeren ennilverwijderen; handig voor parseren en het uitpakken van optionele waarden- Beide leveren nieuwe arrays op en wijzigen de bron nooit
- Koppel ze om gegevens overzichtelijk vorm te geven en daarna te filteren
Volgende: filteren met predicaten.
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 “map en compactMap” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “map en compactMap”, 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 “map en compactMap”?
Transformeer elementen en verwijder nil-waarden. 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 1 van 4.
Hoe lang duurt de les “map en compactMap”?
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
- map en compactMap
- filter en predicates
- reduce en reduce(into:)
- flatMap en chaining