以前只会用,现在总结一下。
lamda表达式可以理解为匿名函数的实现方式。
Lambda表达式完整的声明格式如下:
[capture list] (params list) mutable exception-> return type { function body }
项具体含义如下
- capture list:捕获外部变量列表
- params list:形参列表
- mutable指示符:用来说用是否可以修改捕获的变量(有就表示可以修改;没有这个指示符,就表示不能修改捕获的变量)
- exception:异常设定
- return type:返回类型
- function body:函数体
常用的结构如下:
序号 | 格式 |
---|---|
1 | [capture list] (params list) -> return type {function body} |
2 | [capture list] (params list) {function body} |
3 | [capture list] {function body} |
主要注意下对于参数的捕获方式:
1.[capture list] 为空,即[ ](){ function body} ,表示函数不捕获外部任何参数,也就是函数体内部不需要用到函数体以外的变量,即使是同名的,也是新创建的,否则会编译报错,capture参数失败。
2..[capture list] 不为空,那么就会捕获外部的变量,至于怎么捕获看下面贴的文章,解释的很详细。
其余的详细信息可以参考这篇文章,讲的很详细:
https://www.cnblogs.com/DswCnblog/p/5629165.html
关于lamda的应用,可以看一下我的另一篇博客,关于如何对pair数据对按照first or second元素进行排序
https://blog.youkuaiyun.com/qq_31638535/article/details/82859165