ISO C++ 11 标准的一大亮点是引入Lambda表达式。基本语法如下:

[capture list] (parameter list) ->return type { function body }
 
其中除了“[ ]”(其中捕获列表可以为空,可以是this)和“复合语句”(相当于具名函数定义的函数体),其它都是可选的。它的类型是唯一的具有成员operator()的非联合的类类型,称为闭包类型(closure type):闭包是可以包含自由(未绑定到特定对象)变量的代码块。
 
示例一个触摸开始事件:
rockerRangeEvent->onTouchBegan=[this](Touch* touch,Event* e){return false;
};
 
C++中,一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。它与普通函数不同的是,lambda必须使用尾置返回来指定返回类型,用于确定表达式是否再往下执行?
 
一个更清楚详细的示例:例如调用<algorithm>中的std::sort,ISO C++ 98 的写法是要先写一个compare函数
boolcompare(int&a,int&b)
{
    return a>b;//降序排序
}

然后,再这样调用:

sort(a,a+n,compare);
 
然而,用ISO C++ 11 标准新增的Lambda表达式,可以这么写:
sort(a,a+n,[](inta,intb){returna>b;});//降序排序
ISO C++14支持基于类型推断的泛型lambda表达式。上面的排序代码可以这样写:
sort(a,a+n,[](constauto&a,constauto&b){returna>b;});//降序排序:不依赖a和b的具体类型

由于Lambda的类型是唯一的,不能通过类型名来显式声明对应的对象,但可以利用auto关键字和类型推导:
autof=[](inta,intb){returna>b;};
以上,Lambda表达式有助于重构代码,避免书写过于复杂的参数类型。特别地,不需要显式指出参数类型使使用高阶函数变得更加容易。

关于常用的Lambda(拉姆达)表达式相关推荐

  1. SqlSugar常用查询实例-拉姆达表达式

    SqlSugar支持拉姆达表达式查询,匿名对象参数等,相对还是比较方便好用的. 一.查询列表: //查询列表SqlSugarClient db = SugarContext.GetInstance() ...

  2. java1.8 Lambda拉姆达表达式深入探究

    当我们遇到下面情况时: SingleObj.getInstance().setRunnable(new Runnable() {@Overridepublic void run() {} }); 编译 ...

  3. 拉姆达表达式(Lambda Expressions)

    让我们先看一个简单的拉姆达表达式: x=>x/2 这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值. 通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不 ...

  4. C#拉姆达(=)表达式

    前言: 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(=>)表达式 介绍: "Lambda表达式"是一个匿名函数,是一种高效的类似 ...

  5. 拉姆达表达式 追加 条件判断 ExpressionFuncT, bool

    拉姆达表达式 追加 条件判断 Expression<Func<T, bool>> 2014/11/13 14:47:59  虫虫飞520   程序员俱乐部   我要评论(0) ...

  6. 拉姆达表达式相关知识

    拉姆达表达式 拉姆达表达式是创建匿名函数的另一种方法.因此,拉姆达表达式可以赋值给委托.虽然主要在操作LINQ中使用拉姆达表        达式,但是这种表达式也适用于委托和事件. 拉姆达表达式运算符 ...

  7. 一句话学会拉姆达表达式(JAVA)

    LambdaExpress 一 . 理论 1.1 是什么 ​ Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lam ...

  8. C# 匿名方法和拉姆达表达式

    "` "`代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...

  9. 匿名函数 和 拉姆达表达式

    匿名函数 匿名方法是创建与特定委托实例相关联的未命名代码块的一种方法.可以通过在代码块后面跟上delegate关键字来创建匿名方法. delegate void print();delegate st ...

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(47)-工作流设计-补充
  2. file类打印目录---树状结构,递归
  3. nautilus出现一闪而过现象
  4. 【 2013 Multi-University Training Contest 8 】
  5. java redis使用卡死_jedispool连redis高并发卡死的问题
  6. TypeError: cannot perform reduce with flexible type
  7. CodeIgniter 合作paypal
  8. BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】
  9. 内容页响应母版页控件的事件
  10. JMeter(五)--检查点
  11. Autodesk正在招聘Civil、Infraworks金牌支持工程师(Premium Support Specialist)
  12. 锂电池保护板测试软件,锂电池保护板的简单检测方法
  13. STC15系列单片机-I/O口小结
  14. 壬寅年黄帝故里拜祖大典“中华始祖杯”书画大赛云展厅今日开展
  15. 工行网银助手 重装错误
  16. 网站优化基本技巧(网站优化的主要工作是什么)
  17. 微信小程序使用云函数进行mysql操作
  18. 如何批量修改文件后缀名,python来帮你
  19. 各大高校自曝状态一览,排名不分先后
  20. C语言基本变量语法输出和输入方法

热门文章

  1. CAS解决单点登录SSO
  2. 读书笔记: 经济学原理
  3. 从信息传递的角度来看Android中的广播和Binder
  4. flink从kafka读取数据并传到mysql数据库
  5. ~!#¥%……*()——+|
  6. springboot找不到对象(自动注入失败)
  7. lenovo电脑的麦克风没有声音?声音小?甚至有杂音,无法聊天?
  8. 关闭按钮 重置按钮
  9. 华为鲲鹏HCIA考试-练习05
  10. python将图片转矩阵