0Pricing
Dart Academy · Урок

Функции как значения первого класса

Передача и возврат функций подобно данным

«Функции как значения первого класса» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Объявление функций и типы возвращаемых значений
  2. Позиционные и именованные параметры
  3. Значения по умолчанию и required
  4. Функции как значения первого класса
← Назад к Dart Academy