如何在lambda表达式中使用引用形式捕捉局部变量

技术如何在lambda表达式中使用引用形式捕捉局部变量本篇文章为大家展示了如何在lambda表达式中使用引用形式捕捉局部变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获F.52

本文向您展示了如何在lambda表达式中通过引用来捕获局部变量。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

F.52 在lambda表达式中使用引用形式捕捉局部变量,包含向算法传递变量的情况。

注意:如果你不知道什么是捕获。

https://mp.weixin.qq.com/s/VuW_5OcX7uUUrMbsN2wxPQ

Reason(原因)

为了效率和正确性,当在本地使用lambda表达式时,几乎总是需要通过引用来捕获变量。这包括编写或调用本地并发算法,因为它们需要在返回之前满足。

00-1010

效率考虑:对于大多数类型,传输引用的成本低于传输值的成本。

关于正确性的考虑:很多调用都希望在调用端对原对象产生联合作用(参考下面的例子)(在执行被调用函数的同时)。价值无法做到这一点。

Discussion(讨论)

不幸的是,对于本地调用,没有简单的方法可以通过引用来捕获常量类型变量,以实现效率并避免级联效应。

注意:常量类型的应用应该引用函数声明中声明为常量的引用参数,这样既能提供高效率,又能提供写保护。

Note(注意)

这里,一个大对象(一个网络消息)被传递给一个迭代算法,复制该消息是无效的或不正确的(可能无法复制):

std:for_each(begin(套接字),end(套接字),[message](auto socket){ socket . send(消息);});

注:每个周期的复制成本也很高。

Example(示例)

这是一个简单的三阶段并发管道。每个状态对象封装一个工作线程和一个队列,一个进程函数处理入队,它的析构函数自动进入阻塞状态,等待队列变空后再关闭线程。

void send _ packets(buffersbufs){ stage encryptor([](buffer b){ encrypt(b));});stage compressor([](buffer b){ compress(b);encrypter . process(b);});stage decorator([](buffer b){ decorate(b));压缩机.工艺(b);});for(autob : bufs){ decorator . process(b);} }//自动blockswaitingforpipeline to finish

注意:代码中使用了隐式捕获。详情请参考https://mp.weixin.qq.com/s/RNpLqwekN3BJUbIN-DwVxQ.

00-1010标记了lambda表达式通过引用捕获变量的情况,但是它并没有在函数范围内本地使用,也没有通过引用传递给另一个函数。

注意:这是一个近似规则,但是可以标记为:传递一个很可能被调用方保存的指针,在通过参数访问的堆上的某个地方写入,返回lambda表达式,等等。生命周期条件组还提供了标记转义指针和引用的一般条件,并且还包括从lambda表达式派生的情况。

上面的内容是如何在lambda表达式中通过引用来捕获局部变量。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识,请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/79845.html

(0)

相关推荐

  • STL栈与队列

    技术STL栈与队列 STL栈与队列#includequeue// 队列
    #includestack//栈stackint s;//参数也是数据类型,这是栈的定义方式
    queueint q; //参

    礼包 2021年12月3日
  • 如何以Windows Service的方式运行Python程序

    技术如何以Windows Service的方式运行Python程序这期内容当中小编将会给大家带来有关如何以Windows Service的方式运行Python程序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文

    攻略 2021年11月2日
  • postman中form-data在java中怎么实现(postman怎么传string数组)

    技术postman怎么实现传递ArrayList 给后台小编给大家分享一下postman怎么实现传递ArrayList 给后台,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!postman 传递 Arra

    攻略 2021年12月18日
  • 怎么理解TiDB兼容MySQL参数优化

    技术怎么理解TiDB兼容MySQL参数优化本篇内容介绍了“怎么理解TiDB兼容MySQL参数优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

    攻略 2021年11月8日
  • 民族团结小故事100字,民族团结小故事450字

    技术民族团结小故事100字,民族团结小故事450字中国巾帼英雄第一人冼夫人她的生平被载入籍《二十五史》的《隋书》、《北史》和《资治通鉴》民族团结小故事100字。她的英雄形象依然深深地刻在中国人民心中,被陈、隋皇朝敕封为“

    生活 2021年10月29日
  • 如何用OAuth 2.0实现权限认证mybatis连接mysql数据库

    技术如何用OAuth 2.0实现权限认证mybatis连接mysql数据库本篇内容介绍了“如何用OAuth 2.0实现权限认证mybatis连接mysql数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困

    攻略 2021年12月4日