Анонимные функции и Задержка с Future | DART
Привет, если вы на пути изучения Flutter/Dart или вам просто интересно почитать про разработку подписывайтесь на мой канал в telegram, буду рад вас видеть! А я сегодня поговорим про функции в DART-е!
Предыдущая статья: Реализация функций DART
Объявление анонимных функций
Проблема
Вы хотите заключить выражение в функцию.
Решение
Объявите анонимную функцию для выполнения простого выражения. Часто для функции требуется только одно выражение, и в этом случае анонимная функция может предоставить элегантное решение. Вот пример того, как использовать анонимную функцию:
Обсуждение
В примере была создана функция для возведения числа в квадрат / куб в соответствии с требованиями. Алгоритм принимает входные данные и умножает их, возвращая результат вызывающей стороне. Вы заметите, что функции не содержат имени и являются анонимными. Обычно вы увидите анонимные функции, используемые для коротких фрагментов кода, которые используются для возврата значения. Перед функцией объявляется переменная для хранения результата функции. Примечание: переменная может включать параметры, добавляя их в объявлении в квадратных скобках.
Анонимные функции обычно используют => для указания функции. В примере первые объявленные функции используют этот стиль. Возвращаемое значение функции неявно в объявлении этого типа, что означает, что у вас будет доступ к результату выполненного выражения.
Вторая схема стиля выполняет ту же задачу; однако обратите внимание, что для предоставления доступа к результату используется явный return. Стилистически выбор за вами, как разработчиком, какой из них предпочтительнее.
Dart поддерживает функции первого класса, что, по сути, означает, что их можно использовать в сочетании с функцией (передаваемой в качестве аргументов) и структурами данных. В примере обратите внимание, как оператор print способен обрабатывать встроенные функции для получения результата. Другим вариантом использования было бы, как часть цикла forEach, который выполняет вызов функции за итерацию.
Добавление функциональной задержки с использованием Future
Проблема
Вы хотите ввести пользовательскую задержку, которая будет ожидать состояния завершения.
Решение
Используйте Future для выполнения указанной программной задержки в вашем коде. Вот пример того, как использовать Future для достижения программной задержки:
Обсуждение
В примере код реализует пользовательскую задержку на основе конкретного поля number в функции main. Вызов _customDelay использует Future, который представляет собой асинхронную операцию с двумя состояниями (например, завершено и не завершено). Асинхронные операции обычно используются для ожидания завершения другой операции. В этом примере мы хотим задержать выполнение программы перед выводом окончательного сообщения, указывающего, как долго была использована задержка.
Класс Future используется в ряде ситуаций, как правило, для загрузки длительно выполняющихся процессов, для завершения которых может потребоваться некоторое время. В главе 13 класс Future будет использоваться специально для удаленного доступа к данным.
При использовании Future вы увидите две конкретные вещи, которые обозначают его внутреннюю работу. Первая - это ссылка на async, которая указывает на использование асинхронной функции. Кроме того, вы можете увидеть ссылку на ключевое слово await, означающее “на данном этапе, пожалуйста, дождитесь ответа, прежде чем продолжить”. Затем код будет ожидать завершения состояния для асинхронного выражения.