lambda表达式

Posted pacino12134

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lambda表达式相关的知识,希望对你有一定的参考价值。

介绍

lambda 表达式是一种匿名函数,即没有函数名的函数。语法定义为:

[capture] (parameters) mutable ->return-type statement 

其中:

[capture]:捕捉列表。是lambda表达式的开始标志。编译器根据它识别接下来是否是lambda函数。作用是捕捉上下文中的变量供lambda函数使用。捕获多个变量用逗号分隔。

  • [=],表示值传递方式捕捉父作用域变量(包括this);
  • [&],表示引用传递捕捉所有父作用域变量(包括this);
  • [&val],表示引用传递捕捉变量val;

(parameters):函数参数列表,和普通函数参数列表一样。如果不需要进行参数传递,()可写可不写;

mutable:修饰符,默认情况lambda返回一个const对象,当写了mutable,就可以取消const性质。

  • 一旦写了mutable,参数列表括号不可省略。

->return_type:函数返回类型。和普通函数一样,当不需要返回值时,可省略掉。

statement:函数体,除了可以使用参数列表中的变量,还可以使用捕获到的变量。

技术图片

特点

是内联函数inline。

使用

参数列表和返回类型都是可选的,一般经常会看到这样的形式:

auto result = []() //执行......

 

以上是关于lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章

表达式 lambda 和语句 lambda 的区别

Lambda简介

Lambda 表达式的演示样例-来源(MSDN)

线程池Lambda表达式

:Java之lambda表达式

JDK8新特性之Lambda表达式