Сегодня мы кратко рассмотрим, как можно реализовать успешные и ошибочные обратные вызовы с помощью лямбда-выражений Modern C++.

Когда я реализовывал наш клиент для покупок в приложении, мне пришлось сделать несколько HTTP-вызовов для получения различных файлов/данных. Я решил обернуть зависящий от системы код iOS/macOS в простой класс HTTP с двумя дополнительными шаблонными параметрами, которые служат обратными вызовами успеха/неудачи.

Вот довольно простой способ предоставить классу две полуанонимные лямбда-выражения.

Начнем с определения класса/обертки:

Теперь вот простая вспомогательная функция для создания нового HTTPRequest:

Теперь давайте посмотрим на реальный пример:

Класс очень простой и не хватает нескольких вещей, но вы поняли идею.

Lambda определенно очень полезны в различных сценариях, и я сильно полагаюсь на них с тех пор, как Xcode начал поддерживать C++11.

Ваше здоровье!