Этот учебник расширяет наше покрытие функций и исследует, как функции Dart являются первоклассными объектами.
Все является объектом
Помните, как я сказал все в Dart является объектом. Это определение распространяется и на функции. Функции — это объекты первого класса. Мы можем передавать наши функции в качестве аргументов другим функциям и даже присваивать функции переменным. Эта гибкость — очень мощная функция языка, и я уверен, что вам понравится.
1. void main(){ 2. var listOfStrings = ["functions", 'are', 'objects']; 3. listOfStrings.forEach(saySomething); } void saySomething(String element) { print(element); }
- Точка входа в наше приложение
void main()
- Здесь мы создаем список объектов
String
внутри переменнойlistOfStrings
- Для каждого элемента в пределах
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()); }
- Мы назначаем анонимную функцию переменной
makeTextBig.
Эта анонимная функция печатает строку, используя сокращенный синтаксис функции =>. Анонимные функции описаны ниже. - Мы вызываем функцию через переменную, вызывая переменную так же, как функцию, и передавая ей аргумент
String
. См. вывод ниже:
Обратите внимание, что переменная
makeTextBig
является самодокументируемой. Нет никакой путаницы в том, что делает эта переменная. Это делает текст — БОЛЬШИМ. Хорошо названные переменные улучшают читабельность кода и уменьшают путаницу. Кроме того, это помогает навести порядок в вашей кодовой базе, потому что вам больше не нужно комментировать или аннотировать свой код. Поверь мне в этом. Все, кто читает ваш код, будут бесконечно благодарны за вашу приверженность качеству кода.
Анонимные функции
Еще редактирую…
Помогите мне помочь другим, нажав на кнопку аплодисментов и оставив отзыв.