练习 10.21:编写一个 lambda,捕获一个局部 int 变量,并递减变量值,直至它变为 0。一旦变量变为 0,再调用 lambda 应该不再递减变量。lambda 应该返回一个 bool 值,指出捕获的变量是否为 0。
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int x;
cout << "请输入局部int变量的值: ";
cin >> x;
auto decrease_to_zero = [&x] () -> bool
{
if (x == 0)
{
cout << "变量值已是0,不再递减变量值。" << endl;
return true;
}
else
{
cout << "变量值是:" << x << ",将递减变量值,直到它变为0。" << endl;
while (x)
--x;
return true;
}
};
cout << "首次调用lamda,";
decrease_to_zero();
cout << "再次调用lamda,";
decrease_to_zero();
return 0;
}