Buscar..


Observaciones

Dart es un verdadero lenguaje orientado a objetos, por lo que incluso las funciones son objetos y tienen un tipo, Función. Esto significa que las funciones pueden asignarse a variables o pasarse como argumentos a otras funciones. También puede llamar a una instancia de una clase Dart como si fuera una función.

Funciones con parámetros nombrados.

Al definir una función, use {param1, param2,…} para especificar parámetros nombrados:

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

Al llamar a una función, puede especificar parámetros con nombre usando paramName: valor

enableFlags(bold: true, hidden: false);

Función de alcance

Las funciones de dardo también se pueden declarar de forma anónima o anónima. Por ejemplo, para crear una función anidada, simplemente abra un nuevo bloque de funciones dentro de un bloque de funciones existente

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

La función innerFunction ahora se puede usar dentro, y solo dentro, outerFunction . Ninguna otra función tiene acceso a ella.

Las funciones en Dart también se pueden declarar de forma anónima, que se utiliza comúnmente como argumentos de función. Un ejemplo común es el método de sort del objeto List . Este método toma un argumento opcional con la siguiente firma:

int compare(E a, E b)

La documentación indica que la función debe devolver 0 si a y b son iguales. Devuelve -1 si a < b y 1 si a > b .

Sabiendo esto, podemos ordenar una lista de enteros usando una función anónima.

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 función anónima también puede estar vinculada a identificadores como tal:

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

y usado como una variable ordinaria.

numbers.sort(intSorter);


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow