用过js的朋友肯定对下面的函数调用不会陌生
#include <iostream>
using namespace std;
auto connect = [](auto value){
auto $value = "resolve: " + value;
return [=](auto call){
call($value);
};
};
int main()
{
connect(string("hehe"))([](auto res){
cout << res;
});
return 0;
}
程序输出:
resolve: hehe
高阶函数就是返回函数的函数
connect函数接受一个string类型的值,并对它做一些处理,然后返回一个函数,
返回的子函数又接受一个函数类型变量call,从父作用域获取到$value后注入到回调函数call中。
关键字auto帮我们推导了function的类型,lambda也可以省略返回值类型