dart
funktioner
Sök…
Anmärkningar
Dart är ett riktigt objektorienterat språk, så även funktioner är objekt och har en typ, Funktion. Detta innebär att funktioner kan tilldelas variabler eller skickas som argument till andra funktioner. Du kan också ringa en instans av en Dart-klass som om det vore en funktion.
Funktioner med namngivna parametrar
När du definierar en funktion använder du {param1, param2, ...} för att ange namngivna parametrar:
void enableFlags({bool bold, bool hidden}) {
// ...
}
När du ringer till en funktion kan du ange namngivna parametrar med paramName: värde
enableFlags(bold: true, hidden: false);
Funktionsomfång
Dart-funktioner kan också förklaras anonymt eller kapslade. För att skapa en kapslad funktion, öppnar du bara ett nytt funktionsblock i ett befintligt funktionsblock
void outerFunction() {
bool innerFunction() {
/// Does stuff
}
}
Funktionen innerFunction kan nu användas inuti, och endast inuti, outerFunction . Inga andra funktioner har tillgång till den.
Funktioner i Dart kan också förklaras anonymt, vilket ofta används som funktionsargument. Ett vanligt exempel är den sort metod för List -objektet. Den här metoden tar ett valfritt argument med följande signatur:
int compare(E a, E b)
Dokumentationen anger att funktionen måste returnera 0 om a och b är lika. Det returnerar -1 om a < b och 1 om a > b .
Genom att veta detta kan vi sortera en lista över heltal med hjälp av en anonym funktion.
List<int> numbers = [4,1,3,5,7];
numbers.sort((int a, int b) {
if(a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
});
Anonym funktion kan också vara bunden till identifierare som så:
Function intSorter = (int a, int b) {
if(a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
}
och används som en vanlig variabel.
numbers.sort(intSorter);