Результат лямбды в C++
Лямбда может отдать значение наружу.
Для этого в теле пишут return
и выражение. Вызов тогда получает
этот результат:
int main() {
auto twice = [](int x) {
return x * 2;
};
int result = twice(9);
std::cout << result << "\n"; // выведет 18
return 0;
}
Если тело занимает несколько строк, итог
тоже задают через return:
int main() {
auto clamp = [](int n) {
int limit = 100;
if (n > limit) {
return limit;
}
return n;
};
std::cout << clamp(150) << "\n"; // выведет 100
return 0;
}
Лямбда может возвращать bool,
строку или другой тип - главное, чтобы
return отдавал нужное значение:
int main() {
auto isEven = [](int n) {
return n % 2 == 0;
};
std::cout << isEven(4) << "\n"; // выведет 1
std::cout << isEven(5) << "\n"; // выведет 0
return 0;
}
Создайте лямбду absDiff с двумя
целыми параметрами, которая возвращает
модуль их разности. Выведите результат
для 3 и 10.
Создайте лямбду startsWithA с
параметром типа std::string, которая
возвращает true, если строка
начинается с буквы "a". Выведите
результаты для "apple" и
"banana".