Ricerca…


Osservazioni

Dart è un vero linguaggio orientato agli oggetti, quindi anche le funzioni sono oggetti e hanno un tipo, Function. Ciò significa che le funzioni possono essere assegnate a variabili o passate come argomenti ad altre funzioni. Puoi anche chiamare un'istanza di una classe Dart come se fosse una funzione.

Funziona con parametri denominati

Quando si definisce una funzione, utilizzare {param1, param2, ...} per specificare i parametri denominati:

void enableFlags({bool bold, bool hidden}) {
  // ...
}

Quando si chiama una funzione, è possibile specificare i parametri denominati utilizzando paramName: valore

enableFlags(bold: true, hidden: false);

Scopo della funzione

Le funzioni Dart possono anche essere dichiarate anonime o nidificate. Ad esempio, per creare una funzione nidificata, basta aprire un nuovo blocco funzione all'interno di un blocco funzione esistente

void outerFunction() {
  
    bool innerFunction() {
        /// Does stuff
    }
}

La funzione innerFunction può ora essere utilizzata all'interno e solo all'interno di outerFunction . Nessun'altra altra funzione ha accesso ad essa.

Le funzioni in Freccetta possono anche essere dichiarate anonimamente, che è comunemente usato come argomento di funzione. Un esempio comune è il metodo di sort dell'oggetto List . Questo metodo accetta un argomento facoltativo con la seguente firma:

int compare(E a, E b)

La documentazione afferma che la funzione deve restituire 0 se a e b sono uguali. Restituisce -1 se a < b e 1 se a > b .

Sapendo questo, possiamo ordinare una lista di numeri interi usando una funzione anonima.

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;
   }
});

La funzione anonima può anche essere associata a identificatori in questo modo:

Function intSorter = (int a, int b) {
   if(a == b) {
      return 0;
   } else if (a < b) {
      return -1;
   } else {
      return 1;
   }
}

e usato come una variabile ordinaria.

numbers.sort(intSorter);


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow