C++学习——lambda表达式详解

在学习之前,我们先这么假设有这么一个螺丝加工厂A,还有一个机器加工厂B,B工厂生产机器之前必须要一个一种特定尺寸的螺丝,而这个时候,B工厂找到了A工厂,将加工原件与加工方案交给A公司,若用传统思路的C++思路思考,我们需要先创建一个解决方案,而后进行原材料采购,以及其他材料的加工,之后将螺丝原料与解决方案交给A公司,A公司取到原材料与加工方案,进行加工后将螺丝交给B公司。

这看起来是一套很直观的流程,用代码也很好表示出来,我们将公司作为类,小组作为方法,可以标示为如下

 

 

class  A
{
	val_ fun(val_ source , LPVOID func);val_ fun(val_ source , LPVOID func);
}

class B
{
	func(){ /*螺丝生产方案*/ }func(){ /*螺丝生产方案*/ }
	funcMain(){ …………;/*生成元件*/; A::fun(source,func);…………};funcMain(){ …………;/*生成元件*/; A::fun(source,func);…………};
}


看起来很美观,也不是特别麻烦,但是如果B工厂生产的不只是一种机器呢?那我们是不是需要许多个func?那如果我们需要的元件种类也繁多呢?应A工厂的要求,我们传递原件的时候只能用一个容器来装载,而且在容器内部我们也需要将每种元件进行一个分类处理,否则A工厂怎么分得出哪种元件是用来干吗的呢?这样我们的工作就多了很多。

 

这时候lambda方法就成了我们的好助手,lambda方法可以将他看作是一个外派监工,而且在采购初期就跟着小组在一块,所以无论各种所需的材料对于lambda来说都可以获得,B公司就可以不再单纯的递交一个解决方案过去,而是外派一个监工,让监工自己待着除了必须的金属之外的所有材料,A工厂接到了lambda先生和金属原材料,现根据自己的工艺对金属原材料进行必须的加工工作,剩下的就是在lambda先生的指导下和其带来的材料进行更进一步的加工。

这样不仅不需要创建解决方案,也不用将所需的材料全部一股脑封装在一块。

 

lambda表达式一般有如下三种形式:

 

auto func = [capture] (params) ->ret_type{/*函数主体*/} 
auto func = [capture] (params){/*函数主体*/} 
auto func = [capture]{/*函数主体*/}

 

其中capture表示你所携带的原材料,params表示所需传递给func的值,ret_type表示返回值类型,这么看可能不是很直观,我们下面用一段代码来表示

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值