Поиск…


замечания

Дарт - это истинный объектно-ориентированный язык, поэтому даже функции - это объекты и имеют тип «Функция». Это означает, что функции могут быть назначены переменным или переданы в качестве аргументов другим функциям. Вы также можете вызвать экземпляр класса Dart, как если бы это была функция.

Функции с именованными параметрами

При определении функции используйте {param1, param2, ...}, чтобы указать именованные параметры:

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

При вызове функции вы можете указать именованные параметры, используя paramName: value

enableFlags(bold: true, hidden: false);

Область применения

Функции Дарта также могут быть объявлены анонимно или вложенными. Например, чтобы создать вложенную функцию, просто откройте новый функциональный блок в существующем функциональном блоке

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

Функция innerFunction теперь может использоваться внутри и только внутри, outerFunction . Никакие другие другие функции не имеют к нему доступа.

Функции в Dart также могут быть объявлены анонимно, что обычно используется в качестве аргументов функции. Общим примером является метод sort объекта List . Этот метод принимает необязательный аргумент со следующей сигнатурой:

int compare(E a, E b)

В документации указано, что функция должна возвращать 0 если a и b равны. Он возвращает -1 если a < b и 1 если a > b .

Зная это, мы можем отсортировать список целых чисел, используя анонимную функцию.

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

Анонимная функция также может быть привязана к таким идентификаторам:

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

и используется как обычная переменная.

numbers.sort(intSorter);


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow