Kotlin Academy · leksjon

Sende lambdaer til funksjoner

Send lambdaer som argumenter, og bruk syntaks for lambdaer på slutten.

Leksjon 2 av 413 trinn

Sende lambdaer til funksjoner er en gratis leksjon i Kotlin Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Kotlin Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

Funksjoner som tar imot lambdaer

En høyereordensfunksjon er en funksjon som tar en funksjon, for eksempel en lambda, som parameter. Slik fungerer map, filter og forEach.

Deklarere en høyereordensfunksjon

Bruk en funksjonstype som parametertype.
fun applyTwice(n: Int, op: (Int) -> Int): Int {
    return op(op(n))
}
println(applyTwice(3, { it * 2 }))  // 12

Syntaks for lambda på slutten

Hvis den siste parameteren er en funksjon, kan du flytte lambdaen utenfor parentesene. Dette er syntaksen for en trailing lambda.
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))

// Standard:
applyTwice(3, { it * 2 })
// Trailing lambda:
applyTwice(3) { it * 2 }

Trailing lambda uten parenteser

Når lambdaen er det eneste argumentet, kan du utelate parentesene helt.
fun execute(block: () -> Unit) = block()

// With parens:
execute({ println("Hello") })
// Without parens (idiomatic):
execute { println("Hello") }

Sende en lambda-variabel

Du kan sende en lagret lambdareferanse ved å bruke variabelnavnet.
val double = { n: Int -> n * 2 }
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(5, double))  // 20

Funksjonsreferanser med ::

Bruk :: til å sende en navngitt funksjon som et lambda-kompatibelt argument.
fun triple(n: Int) = n * 3
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(2, ::triple))  // 18

Flere lambda-parametere

En funksjon kan ta imot flere lambda-parametere. Bare den siste kan bruke trailing lambda-syntaks.
fun transform(
    value: Int,
    before: (Int) -> Int,
    after: (Int) -> Int
) = after(before(value))

println(transform(5, { it * 2 }, { it + 1 }))  // 11

Sende en lambda til filter

filter tar imot et predikat-lambda – en funksjon fra et element til Boolean.
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)  // [2, 4, 6]

Kjede høyereordensfunksjoner

Kjed flere kall til høyereordensfunksjoner for å lage uttrykksfulle datapipelines.
val result = (1..10)
    .filter { it % 2 != 0 }  // odds
    .map { it * it }          // square
    .take(3)                  // first 3
println(result)  // [1, 9, 25]

Lambdaer som fanger opp variabler

Lambdaer kan fange opp variabler fra det omkringliggende området (closure). I Kotlin kan de til og med fange opp og endre en var.
var total = 0
listOf(1, 2, 3, 4).forEach { total += it }
println(total)  // 10

Returnere en lambda fra en funksjon

Høyereordensfunksjoner kan også returnere lambdaer, slik at det opprettes fabrikkfunksjoner.
fun multiplierOf(factor: Int): (Int) -> Int {
    return { n -> n * factor }
}
val double = multiplierOf(2)
val triple = multiplierOf(3)
println(double(5))  // 10
println(triple(5))  // 15

Hurtigsjekk

Når kan en lambda flyttes utenfor parentesene ved hjelp av trailing lambda-syntaks?

Oppsummering

Høyereordensfunksjoner tar imot lambdaer som parametere. Trailing lambda-syntaks flytter lambdaen utenfor parentesene når den står sist. :: sender navngitte funksjonsreferanser. Neste: den implisitte «it»-parameteren!
Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «Sende lambdaer til funksjoner» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Kotlin Academy, inkludert «Sende lambdaer til funksjoner», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Sende lambdaer til funksjoner»?

Send lambdaer som argumenter, og bruk syntaks for lambdaer på slutten. Du øver på Kotlin Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Kotlin Academy?

Ingen tidligere erfaring er nødvendig. Kotlin Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Sende lambdaer til funksjoner»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Kotlin Academy-leksjonen?

Ja. Alle Kotlin Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hva er en lambda? Syntaks og typer
  2. Sende lambdaer til funksjoner
  3. it: Den implisitte parameteren
  4. filter, map og find på samlinger
← Tilbake til Kotlin Academy