filter och predikat
Välj element som uppfyller ett villkor.
filter och predikat är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad är filter?
filter behåller bara de element där en closure (ett predikat) returnerar true.
- Closure-funktionen returnerar en
Bool - Elementtypen förblir densamma
- Resultatet är en ny array, som kan vara mindre
En enkel filter
Behåll bara de jämna talen:
let numbers = [1, 2, 3, 4, 5, 6]
let evens = numbers.filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6]Filtrera strängar
Behåll ord som är längre än tre tecken:
let words = ["hi", "swift", "go", "filter"]
let long = words.filter { $0.count > 3 }
print(long) // ["swift", "filter"]Vad är ett predikat?
Ett predikat är helt enkelt en funktion som tar ett värde och returnerar en Bool. filter anropar predikatet en gång per element och behåller värdet när predikatet är true.
Namnge ett predikat
Predikat kan lagras och återanvändas för bättre läsbarhet:
let isPositive: (Int) -> Bool = { $0 > 0 }
let data = [-2, 5, -1, 8]
print(data.filter(isPositive)) // [5, 8]Kombinera villkor
Använd booleska operatorer i predikatet:
let nums = [1, 2, 3, 4, 5, 6, 7, 8]
let picked = nums.filter { $0 % 2 == 0 && $0 > 4 }
print(picked) // [6, 8]Filtrera strukturer
Filtrera en samling modellobjekt utifrån en egenskap:
struct Product { let name: String; let price: Int }
let items = [Product(name: "Pen", price: 2), Product(name: "Bag", price: 40)]
let cheap = items.filter { $0.price < 10 }
print(cheap.map { $0.name }) // ["Pen"]filter kontra map
De besvarar olika frågor: filter väljer vilka element som ska vara kvar, medan map ändrar varje element. Resultattyperna skiljer sig åt:
let n = [1, 2, 3, 4]
print(n.filter { $0 > 2 }) // [3, 4] (subset, same type)
print(n.map { $0 > 2 }) // [false, false, true, true]Kedja filter och map
Filtrera först för att minska mängden arbete och transformera sedan:
let nums = [1, 2, 3, 4, 5, 6]
let result = nums
.filter { $0 % 2 == 0 }
.map { $0 * $0 }
print(result) // [4, 16, 36]Räkna utan att behålla
Om ni bara behöver en räkning fungerar filter(...).count, men count(where:) undviker att skapa en array:
let votes = [true, false, true, true]
let yes = votes.filter { $0 }.count
print(yes) // 3Filtrera en dictionary
filter på en dictionary ger en dictionary med matchande nyckel-värde-par:
let ages = ["Ann": 30, "Bo": 17, "Cy": 22]
let adults = ages.filter { $0.value >= 18 }
print(adults.keys.sorted()) // ["Ann", "Cy"]Snabbtest
Vad måste ett filter-predikat returnera?
Sammanfattning
Ni har lärt er filtrering:
filterbehåller element där predikatet ärtrue- Ett predikat är vilken funktion som helst från ett värde till en
Bool - Elementtypen bevaras, men arrayen kan bli mindre
- Kombinera villkor med
&&/||och kedja medmap
Nästa steg: reduce.
Lär dig Swift med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 122
- Lektioner
- 409
Vanliga frågor
Är lektionen ”filter och predikat” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”filter och predikat”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”filter och predikat”?
Välj element som uppfyller ett villkor. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Swift Academy?
Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”filter och predikat”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Swift Academy-lektionen?
Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- map och compactMap
- filter och predikat
- reduce och reduce(into:)
- flatMap och kedjning