Högre ordningens funktioner och currying
Skicka, returnera och partiellt applicera funktioner
Högre ordningens funktioner och currying är en gratis lektion i Dart Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Dart Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Dart Academy innehåller totalt 4 lektioner.
Funktioner är värden
I Dart är en funktion helt enkelt ett värde som Ni kan lagra i en variabel. Den enda idén öppnar dörren till hela världen av funktionella mönster. 🎯
int square(int x) => x * x;
var op = square;
print(op(4)); // 16Vad högre ordning innebär
En higher-order function är en funktion som tar en funktion som argument eller returnerar en funktion. Ni har redan använt sådana med listmetoder.
Skicka in en funktion
När Ni skickar beteende som argument bestämmer anroparen vad som ska hända. Här kör apply den funktion som den tar emot.
int apply(int v, int Function(int) f) => f(v);
print(apply(5, (x) => x + 1)); // 6Syntax för funktionstyper
Typen int Function(int) kan läsas som: en funktion som tar en int och returnerar en int. Typer gör avsikten helt tydlig.
void run(String Function(String) format) {
print(format('hi'));
}Returnera en funktion
En higher-order function kan också returnera en funktion. Den returnerade funktionen kommer ihåg värdena omkring sig när den skapades.
Function makeAdder(int n) {
return (int x) => x + n;
}Använd den returnerade funktionen
Anropa skaparfunktionen en gång för att bygga en specialiserad funktion och återanvänd den sedan. Varje resultat är sitt eget lilla configured-verktyg.
var add10 = makeAdder(10);
print(add10(5)); // 15
print(add10(1)); // 11Möt currying
Currying omvandlar en funktion med flera argument till en kedja av funktioner med ett argument. Ni anger ett värde i taget.
int Function(int) add(int a) => (int b) => a + b;
print(add(3)(4)); // 7Partiell tillämpning
Fastställ det första argumentet nu och resten senare. Detta är partial application, vilket skapar återanvändbara, förkonfigurerade hjälpfunktioner.
var add3 = add(3);
print(add3(10)); // 13
print(add3(20)); // 23Varför använda currying
Currying låter Er bygga specialiserade funktioner från generella utan att skriva om logiken. Det är särskilt användbart när Ni sätter samman små pipelines.
Typ för funktioner som parametrar
Ni kan namnge komplexa funktionstyper med en typedef för att hålla signaturerna läsbara i hela koden.
typedef IntOp = int Function(int);
int apply(int v, IntOp f) => f(v);Kortkommandot tear-off
I stället för att omsluta en metod i en lambda kan Ni skicka dess namn direkt. Denna tear-off håller anropen rena och tydliga.
['1', '2', '3'].map(int.parse).forEach(print);Snabb kontroll
Låt oss kontrollera Er förståelse av higher-order functions.
Sammanfattning
Funktioner är värden, så Ni kan skicka och returnera dem. Currying och partiell tillämpning omvandlar generella funktioner till specialiserade verktyg. Bra arbetat! 🚀
Lär dig Dart 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
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Högre ordningens funktioner och currying” gratis?
Ja – hela texten till ”Högre ordningens funktioner och currying” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Dart Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Dart Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Högre ordningens funktioner och currying”?
Skicka, returnera och partiellt applicera funktioner Ni övar på Dart 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 Dart Academy?
Du behöver inga förkunskaper. Utbildningen i Dart 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 1 av 4.
Hur lång tid tar lektionen ”Högre ordningens funktioner och currying”?
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 Dart Academy-lektionen?
Ja. Varje Dart 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
- Högre ordningens funktioner och currying
- fold, reduce och expand
- Lata itererbara objekt och generatorer med sync*
- Sätt samman pipelines med rena funktioner