Swift Academy · Lektion

filter och predikat

Välj element som uppfyller ett villkor.

Lektion 2 av 413 steg

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)  // 3

Filtrera 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:

  • filter behåller element där predikatet är true
  • 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 med map

Nästa steg: reduce.

Gratis att börja

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

  1. map och compactMap
  2. filter och predikat
  3. reduce och reduce(into:)
  4. flatMap och kedjning
← Tillbaka till Swift Academy