前言
通过多年的积累,如今的小明已经可以对各类复杂的代码游刃有余,但是复杂代码真的好吗,小明不觉得然。以简洁代码为己任的小明决定再次潜心研究。下面小明将介绍一种C++11中新增的特性来简化代码——Lambda函数。web
实战
想必使用过Java和Python的同窗都使用过Lambda函数。那就来看一下在C++中Lambda函数是怎样简化编程工做的。编程
首先看一下Lambda的语法形式:微信
[捕获说明符](函数参数) mutable/exception声明 ->返回值类型 {函数体}函数
下面分别进行介绍
测试
捕获说明符this
[] 不捕获任何变量url
[&] 捕获外部做用域中全部变量,并做为引用在函数体中使用spa
[=] 捕获外部做用域中全部变量,并拷贝一份在函数体中使用.net
[this] 捕获当前类中的this指针指针
[a, &b] a按值传递,b按引用传递
2. 函数参数 与命名函数同样。
3. mutable 容许函数体修改传值进来的形参,以及调用它们的非const成员函数
exception 指定函数抛出的异常
4. ->返回值类型 表示函数返回值的类型,当返回void,或者函数体中只有一处return时,能够省略。
5. 函数体,标识函数的实现,不能省略。
这里以一个例子介绍Lambda函数的使用。
在使用Sort函数进行排序时,能够经过比较函数来指定不一样的排序方式,例如按绝对值的升序排列,若是比较函数较为简单,只在Sort函数中使用,不须要在别处使用,又不想为函数命名花费时间,那么Lambda函数就是最好的选择。它限制了别人的访问,更私有,为了更易的代码和更方便的编程。固然,还有for_each和Lambda函数是一个很是完美的结合。
后续
小明的精彩故事还在继续,有你的关注咱们将继续和你们介绍一些咱们作白盒测试的一些经验和踩过的一些坑。
想看以前的系列文章?发送“搜:独步武林”到“搜狗测试”公众号就能够搜索到。
本文分享自微信公众号 - 搜狗测试(SogouQA)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。