Сегодня мы кратко рассмотрим, как можно реализовать успешные и ошибочные обратные вызовы с помощью лямбда-выражений Modern C++.
Когда я реализовывал наш клиент для покупок в приложении, мне пришлось сделать несколько HTTP-вызовов для получения различных файлов/данных. Я решил обернуть зависящий от системы код iOS/macOS в простой класс HTTP с двумя дополнительными шаблонными параметрами, которые служат обратными вызовами успеха/неудачи.
Вот довольно простой способ предоставить классу две полуанонимные лямбда-выражения.
Начнем с определения класса/обертки:
Теперь вот простая вспомогательная функция для создания нового HTTPRequest:
Теперь давайте посмотрим на реальный пример:
Класс очень простой и не хватает нескольких вещей, но вы поняли идею.
Lambda определенно очень полезны в различных сценариях, и я сильно полагаюсь на них с тех пор, как Xcode начал поддерживать C++11.
Ваше здоровье!