dart
functies
Zoeken…
Opmerkingen
Dart is een echte objectgeoriënteerde taal, dus zelfs functies zijn objecten en hebben een type, Functie. Dit betekent dat functies aan variabelen kunnen worden toegewezen of als argumenten aan andere functies kunnen worden doorgegeven. Je kunt ook een instantie van een Dart-klasse oproepen alsof het een functie is.
Functies met benoemde parameters
Gebruik bij het definiëren van een functie {param1, param2, ...} om benoemde parameters op te geven:
void enableFlags({bool bold, bool hidden}) {
// ...
}
Wanneer u een functie aanroept, kunt u benoemde parameters opgeven met paramName: value
enableFlags(bold: true, hidden: false);
Functie scoping
Dartfuncties kunnen ook anoniem worden verklaard of genest. Als u bijvoorbeeld een geneste functie wilt maken, opent u gewoon een nieuw functieblok in een bestaand functieblok
void outerFunction() {
bool innerFunction() {
/// Does stuff
}
}
De functie innerFunction kan nu worden gebruikt binnen, en alleen binnen, outerFunction . Geen enkele andere functie heeft hier toegang toe.
Functies in Dart kunnen ook anoniem worden verklaard, wat vaak wordt gebruikt als functieargumenten. Een bekend voorbeeld is de sort methode List object. Voor deze methode is een optioneel argument met de volgende handtekening nodig:
int compare(E a, E b)
In de documentatie staat dat de functie 0 moet retourneren als a en b gelijk zijn. Het geeft -1 terug als a < b en 1 als a > b .
Dit wetende, kunnen we een lijst van gehele getallen sorteren met behulp van een anonieme functie.
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;
}
});
Anonieme functie kan ook gebonden zijn aan id's zoals:
Function intSorter = (int a, int b) {
if(a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
}
en gebruikt als een gewone variabele.
numbers.sort(intSorter);