纵向入参
简单举一下例子
//方法1
int get(std::string name,int age)
{
return 10;
}
//方法2
std::string post(std::string name,int age,double height)
{
return "20";
}
std::map<std::string,std::any> func_array;
//入参 闭包
std::functional<atd::any(std::map<std::string,std::any>)> func1 = [](std::map<std::string,std::any> params)
{
return get(std::any_cast<std::string>(params["name"]),std::any_cast<int>(params["age"]));
};
func_array["get"] = func1 ;
std::functional<atd::any(std::map<std::string,std::any>)> func2 = [](std::map<std::string,std::any> params)
{
return post(std::any_cast<std::string>(params["name"]),std::any_cast<int>(params["age"]),std::any_cast<double>(params["height"]));
};
func_array["post"] = func2 ;
//调用
std::map<std::string,std::any> params;
params["name"] = "名称";
params["age"] = 22;
params["height"] = 1.78;
std::any result1 = std::any_cast<std::functional<atd::any(std::map<std::string,std::any>)>>(func_array["get"])(params);
if(result1.type() == typeid(int))
{
std::cout<< std::any_cast<int>(result1) <<std::endl;
}
std::any result2 = std::any_cast<std::functional<atd::any(std::map<std::string,std::any>)>>(func_array["post"])(params);
if(result2 .type() == typeid(int))
{
std::cout<< std::any_cast<int>(result2 ) <<std::endl;
}
else if(result2 .type() == typeid(std::string))
{
std::cout<< std::any_cast<std::string>(result2 ) <<std::endl;
}
纵向入参方法
下一章 用模板萃取成员方法 参数类型 返回值类型