Этот учебник расширяет наше покрытие функций и исследует, как функции Dart являются первоклассными объектами.

Все является объектом

Помните, как я сказал все в Dart является объектом. Это определение распространяется и на функции. Функции — это объекты первого класса. Мы можем передавать наши функции в качестве аргументов другим функциям и даже присваивать функции переменным. Эта гибкость — очень мощная функция языка, и я уверен, что вам понравится.

1.   void main(){
  
2.      var listOfStrings = ["functions", 'are', 'objects']; 
     
3.      listOfStrings.forEach(saySomething);
     }
void saySomething(String element) {
        print(element);
     }
  1. Точка входа в наше приложение void main()
  2. Здесь мы создаем список объектов String внутри переменной listOfStrings
  3. Для каждого элемента в пределах listOfStrings вызывается saySomething, и элемент передается в saySomething в качестве аргумента. Если говорить более конкретно, то происходит следующее:

"functions" передается saySomething и saySomething выводит функции.

"are" передается saySomthing, а saySomething печатает является.

Наконец, "objects" передается в saySomething и saySomething печатает объекты.

Чистый эффект многократной передачи функции saySomething в функциюforEach можно увидеть ниже:

Назначение функции переменной

void main(){
  
1.      var makeTextBig = (String string) => print(string);
  
2.      makeTextBig('make me big'.toUpperCase());
}
  1. Мы назначаем анонимную функцию переменнойmakeTextBig. Эта анонимная функция печатает строку, используя сокращенный синтаксис функции =>. Анонимные функции описаны ниже.
  2. Мы вызываем функцию через переменную, вызывая переменную так же, как функцию, и передавая ей аргумент String. См. вывод ниже:

Обратите внимание, что переменная makeTextBig является самодокументируемой. Нет никакой путаницы в том, что делает эта переменная. Это делает текст — БОЛЬШИМ. Хорошо названные переменные улучшают читабельность кода и уменьшают путаницу. Кроме того, это помогает навести порядок в вашей кодовой базе, потому что вам больше не нужно комментировать или аннотировать свой код. Поверь мне в этом. Все, кто читает ваш код, будут бесконечно благодарны за вашу приверженность качеству кода.

Анонимные функции

Еще редактирую…

Помогите мне помочь другим, нажав на кнопку аплодисментов и оставив отзыв.