0Pricing
Dart Academy · Урок

Анонимные функции и замыкания

Захват переменных во встроенных функциях

«Анонимные функции и замыкания» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Функции без имён

Иногда функция нужна Вам один раз и больше никогда не понадобится. У анонимной функции нет имени, и её записывают прямо в месте использования. ✨

Основная форма

Анонимная функция состоит только из параметров и тела, без имени перед ними. Её можно сохранить в переменной.

var greet = (String n) {
  print('Hi ' + n);
};

Вызов сохранённой функции

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

greet('Ada');

Передача функции напрямую

Чаще всего анонимную функцию передают прямо в метод. Здесь forEach вызывает её для каждого элемента.

[1, 2, 3].forEach((n) {
  print(n * 2);
});

Анонимные функции со стрелкой

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

var doubled = [1, 2, 3].map((n) => n * 2);

Что такое замыкание

Замыкание — это функция, которая помнит переменные из места своего создания, даже после завершения внешней области видимости.

Захват переменной

Внутренняя функция ниже захватывает шаг. При каждом последующем вызове возвращённой функции она продолжает использовать это значение.

Function adder(int step) {
  return (int x) => x + step;
}

Каждое замыкание независимо

Вызовите фабричную функцию дважды — каждое возвращённое замыкание сохранит отдельное захваченное значение. Они не будут влиять друг на друга.

var add5 = adder(5);
var add10 = adder(10);

Замыкания хранят состояние

Захваченная переменная может изменяться между вызовами, позволяя замыканию помнить прогресс, подобно маленькому счётчику.

int count = 0;
var tick = () => ++count;

Почему это важно

Замыкания лежат в основе обратных вызовов, обработчиков событий и методов списков. Они позволяют объединить поведение с нужными ему данными.

Делайте их небольшими

Встроенные замыкания хороши, когда они короткие. Если такое замыкание становится сложным, дайте ему настоящее имя, чтобы другим было проще его прочитать.

Быстрая проверка

Что превращает функцию в замыкание?

Повторение

Вы познакомились с анонимными функциями для разового использования и с замыканиями, которые захватывают окружающие переменные, чтобы хранить собственное состояние. 🎯

Часто задаваемые вопросы

Урок «Анонимные функции и замыкания» бесплатный?

Да — полный текст урока «Анонимные функции и замыкания» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Анонимные функции и замыкания»?

Захват переменных во встроенных функциях Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Анонимные функции и замыкания»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Стрелочный синтаксис для однострочных функций
  2. Анонимные функции и замыкания
  3. Типы, допускающие null, и вопросительный знак
  4. Операторы с учётом null: ?., ?? и !
← Назад к Dart Academy