更方便的函数回调——Lambda

auto callbackFunc = [&](){
    backHome();
};
  • []符号,表示要开始一个lambda函数;
  • ()符号,里面填写函数的参数;

当想在lambda函数里使用外部的变量时需要指定变量捕获模式。

  在[]符号里加上指定的符号,就能指定变量捕获模式,常用的捕获模式如下:

  • [] ,不截取任何变量。
  • [&] , 截取外部作用域中所有变量,并且作为引用在lambda函数中使用,只要变量没有被释放,就可以在lambda函数中使用。但是局部变量不可以使用,因为局部变量会被释放。
  • [=] ,截取外部作用域中所有变量,并且作为引用在lambda函数中使用,只要变量没有被释放,就可以在lambda函数中使用,即使外部变量的值改变了,但是在lambda函数执行时,依旧是赋值时的值。
  • [=,&name] , 和[=]功能一样,但是对name变量使用引用(也就是[&]的方式)。
  • [name] , 和[=]功能一样,但是只针对name变量,其他忽略。
时间: 2024-10-05 17:22:46

更方便的函数回调——Lambda的相关文章

委托,匿名函数和lambda表达式

很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一下自己对他的印象,顺便把自己的感悟和想法写出来,以便自己能有更深的理解,由于本人水平有限,也欢迎大家多多探讨,有问题大家一起解决一起进步. MSDN上面对委托的定义是:delegate 是表示对具有特定参数列表和返回类型的方法的引用的类型.在我看来委托的特性主要在: 1.把一个方法当做一个参数传递给

C# 匿名函数和Lambda 表达式

匿名函数是一个"内联"语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数. 共有两种匿名函数,以下主题中分别讨论了这些函数: Lambda Expressions (C# Programming Guide). ' data-guid="7df86c4348dea57abb774138a7de05b8">Lambda 表达式(C# 编程指南) . 匿名方法(C# 编程指南) 说明

3 委托、匿名函数、lambda表达式

委托.匿名函数.lambda表达式 在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法.C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式 // 声明一个委托 delegate void Printer(string s); class TestClass { static void Main() { //lambda表达式 Printer pp = x => { Console.WriteLine(&quo

C#语法之匿名函数和Lambda表达式

上一篇博客主要是对委托和事件做了一小结,这篇是在上一篇博客的基础上对匿名函数和Lambda表达式小结.还是接着上一篇说起,在上一篇中也说了委托是一种数据结构,主要是解决让函数作为参数的问题.在使用委托时首先要声明代理,然后实例化,并将委托对象和已定义好的函数关联上,最后调用.这里与已定义好的函数关联的事情,如果函数是经常使用的也还好,如果不是经常使用的可能只调用一次,那这岂不是老费劲了.就是能不能在使用的时候定义下呢?于是乎有了匿名方法. 一.匿名方法的使用. 匿名方法的使用步骤和委托的使用步骤

Python基础第十一天——内置函数的补充、内置函数与lambda、递归

一.拾遗 1.生成器表达式形式的多个函数之间的协同工作. 例:做一包子吃一个包子 优点:更省内存. 以上例子的原理: 重点★★★★★ 源代码: import time import random # 装饰器 def init(func): '''生成器表达式的初始化''' def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper def cook(people,count): '''定义

Python 函数之lambda、map、filter和reduce

1.lambda函数 lambda()是Python里的匿名函数,其语法如下: lambda [arg1[, arg2, ... argN]]: expression 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 if 1 == 1: name = 'evescn' else: name = 'gm' # 三元运算 name = 'evescn' if 1 == 1 else 'gm' 对于简单的函数,也存在一种简便的表示方式,即:lambda

Python自动化运维之3、初识函数及lambda

函数 函数的基础概念: 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基本结构 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在python中可以创建4种函数 (1)全局函数:定义在模块 (2)局部函数:嵌套于其它函数中 (3)lambda函数:表达式,如需多次调用 (4)方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用 python提供了很多内置函数 创建函数: def functionName(arg1,arg

一个功能更强大的函数,也是用正则表达式写的

<% Option Explicit Function stripHTML(strtext) dim arysplit,i,j, strOutput arysplit=split(strtext,"<") if len(arysplit(0))>0 then j=1 else j=0 for i=j to ubound(arysplit) if instr(arysplit(i),">") then arysplit(i)=mid(arysp

递归、函数回调、字符的思考

1.函数指针类型做什么工作呢(起什么作用) 1)它规定了函数的"返回值和参数."只要是这种它所对应的返回值和参数类型的函数,它都可以调用起来. 2)回调函数是通过函数指针做函数参数实现的,"它的本质是:提前对函数的返回值和参数做了一个约定" 2.数组类型和数组指针指针类型 1)数组类型 int arr[10]; arr代表数组首元素地址: &arr代表整个数组首地址.虽然 arr 和 &arr 的值相同,但是他们的步长不同 2)数组类型 typede