dart
Funkcje
Szukaj…
Uwagi
Dart jest prawdziwym językiem zorientowanym obiektowo, więc nawet funkcje są obiektami i mają typ Funkcji. Oznacza to, że funkcje można przypisać do zmiennych lub przekazać jako argumenty do innych funkcji. Możesz także wywołać instancję klasy Dart, tak jakby to była funkcja.
Funkcje o nazwanych parametrach
Podczas definiowania funkcji użyj {param1, param2,…}, aby określić nazwane parametry:
void enableFlags({bool bold, bool hidden}) {
// ...
}
Podczas wywoływania funkcji można podać nazwane parametry za pomocą parametru paramName: wartość
enableFlags(bold: true, hidden: false);
Określanie zakresu funkcji
Funkcje Dart mogą być również deklarowane anonimowo lub zagnieżdżone. Na przykład, aby utworzyć funkcję zagnieżdżoną, wystarczy otworzyć nowy blok funkcyjny w istniejącym bloku funkcyjnym
void outerFunction() {
bool innerFunction() {
/// Does stuff
}
}
Funkcji innerFunction można teraz używać wewnątrz i tylko w funkcji outerFunction . Żadne inne funkcje nie mają do niego dostępu.
Funkcje w Dart mogą być również deklarowane anonimowo, co jest powszechnie używane jako argumenty funkcji. Typowym przykładem jest metoda sort obiektu List . Ta metoda pobiera opcjonalny argument z następującym podpisem:
int compare(E a, E b)
Państwa dokumentacji, że funkcja musi powrócić 0 jeśli i a b są równe. Zwraca -1 jeśli a < b oraz 1 jeśli a > b .
Wiedząc o tym, możemy posortować listę liczb całkowitych za pomocą anonimowej funkcji.
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;
}
});
Funkcja anonimowa może być również powiązana z takimi identyfikatorami:
Function intSorter = (int a, int b) {
if(a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
}
i używane jako zwykła zmienna.
numbers.sort(intSorter);