Функции как значения первого класса
Передача и возврат функций подобно данным
«Функции как значения первого класса» — бесплатный урок Dart Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.
Функции — это значения
В Dart функция — это значение первого класса, как число или строка. Её можно сохранить, передать и вернуть. 🎁
Сохранение функции
Присвойте функцию переменной, указав её имя без круглых скобок. Теперь переменная указывает на саму функцию.
int triple(int x) => x * 3;
var f = triple;
f(4); // 12Тип функции
У каждой функции есть тип, описывающий её входные и выходные данные. Для ясности его можно указать с помощью ключевого слова Function.
int Function(int) op = triple;Передача функции
Функция может быть параметром другой функции. Получающая её функция вызовет её позже, изменяя поведение без переписывания кода.
int apply(int x, int Function(int) fn) {
return fn(x);
}Функции высшего порядка
Функция, принимающая или возвращающая другую функцию, называется функцией высшего порядка. Такие функции позволяют создавать гибкие и повторно используемые строительные блоки.
apply(5, triple); // 15Обратные вызовы в действии
Передача функции для последующего выполнения называется обратным вызовом. Методы коллекций, например forEach, постоянно используют этот шаблон.
[1, 2, 3].forEach(print);Возврат функции
Функция может создать и вернуть другую функцию. Возвращённая функция может даже помнить значения из места, где была создана.
Function adder(int n) {
return (int x) => x + n;
}Использование возвращённой функции
Вызовите функцию-создатель, сохраните её результат, а затем вызовите этот результат. Каждое замыкание сохраняет собственное захваченное значение.
var add5 = adder(5);
add5(10); // 15Функции в коллекциях
Поскольку функции являются значениями, можно хранить множество функций в списке или карте и выбирать одну для выполнения во время работы программы.
var ops = [triple, add5];
ops[0](2); // 6Преобразование с помощью функций
Методы вроде map принимают функцию и применяют её к каждому элементу. Так преобразование становится повторно используемым значением, которое можно передавать.
[1, 2, 3].map(triple).toList(); // [3, 6, 9]Почему это важно
Функции первого класса позволяют настраивать поведение, передавая логику, а не флаги. Это открывает путь к чистой композиции во всём Dart и Flutter. ✨
Быстрая проверка
Проверим, стало ли Вам понятно, что такое функции первого класса.
Повторение
Теперь Вы умеете сохранять, передавать и возвращать функции, а также создавать вспомогательные функции высшего порядка. Это основа функционального стиля в Dart. 🎉
Часто задаваемые вопросы
Урок «Функции как значения первого класса» бесплатный?
Да — полный текст урока «Функции как значения первого класса» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.
Чему я научусь в уроке «Функции как значения первого класса»?
Передача и возврат функций подобно данным Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Dart Academy?
Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Функции как значения первого класса»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Dart Academy?
Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Объявление функций и типы возвращаемых значений
- Позиционные и именованные параметры
- Значения по умолчанию и required
- Функции как значения первого класса