首页 > 其他分享 >Lambda表达式

Lambda表达式

时间:2024-03-16 14:11:37浏览次数:441  
标签:变量 捕获 列表 引用 隐式 表达式 Lambda

Lambda表达式

1、什么是Lambda表达式

​ 用于定义匿名函数,使得代码更加灵活和简洁。常见形式如下:

auto plus = [] (int v1,int v2) -> int {return v1 + v2;}
int sum = plus(1,2)
2、完整的表达式类型
[capture] (parameters) mutable ->return-type {statement};
即 [捕获列表](参数)mutable -> 返回值 {函数体}
  • capture捕获列表:lambda可以把上下文变量以值或引用的方式捕获,在body中直接使用
  • params参数列表
  • return-type:返回值类型
  • statement:函数的具体逻辑
3、捕获列表

常用的捕获方式:

值捕获:值捕获的方式,就是在创建的时候,把这个变量的值复制给局部的临时变量,然而这个值不能在lamda内部被修改,如果想要在内部修改这个值,可以在捕获列表后加mutable,修改后对原变量没有影响。

引用捕获:这种捕获方式在编译期间不会把变量的值复制到lambda的局部作用域,而是直接对这个引用所指的变量进行操作。这种方式对值进行修改,会对原变量也造成修改。

隐式捕获:如果lambda中需要用到的非静态局部变量非常多,全部写入捕获列表,就会显得非常臃肿,有简便写法,即为隐式捕获。

1、捕获列表的形式为"[=]"(值捕获)或者"[&]"(引用捕获);
2、捕获列表里不能同时写"="和"&",即"[=, &]"是非法的;
3、隐式捕获可以和显式捕获搭配使用,但不能和同类型的显示捕获一起使用。即隐式值捕获只能搭配显式引用捕获,隐式引用捕获只能搭配显式值捕获。表现形式为:"[=,&变量1,&变量2]"或者"[&,变量1,,变量2]"。

参考链接:C++基础(九)再谈lambda 值捕获、引用捕获、隐式捕获以及避坑_值捕获和引用捕获-CSDN博客

标签:变量,捕获,列表,引用,隐式,表达式,Lambda
From: https://www.cnblogs.com/mjyrise/p/18077024

相关文章

  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复
    20.有效的括号https://leetcode.cn/problems/valid-parentheses/description/publicbooleanisValid(Strings){if(s==null)returntrue;Stack<Character>stack=newStack<>();for(inti=0;i<s.length();i++){......
  • 实验 1 C语言开发实验环境和数据类型、运算符、表达式
     ......
  • jdk1.8新特性——lamdba表达式
    如果方法有返回值且方法体中只有return这一行代码,return可省略,如果不写,必须随同花括号一起省略publicclassTest01{publicstaticvoidmain(String[]args)throwsExecutionException,InterruptedException{TestInterfacetestInterface=(a,b)->a+b;......
  • 深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
    Java线程线程使程序能够通过同时执行多个任务而更有效地运行。线程可用于在不中断主程序的情况下在后台执行复杂的任务。创建线程有两种创建线程的方式。扩展Thread类可以通过扩展Thread类并覆盖其run()方法来创建线程:publicclassMyThreadextendsThread{public......
  • Lamda 表达式
    Runable是一个函数接口,再创建线程时可以使用Lamda表达式,下面是Lamda的简化过程publicclassindex{//3.实现静态类staticclassStudent1implementsILike{@Overridepublicvoideat(){System.out.println("student1-eat")......
  • Lambda架构和Kappa架构的区别
    Lambda架构和Kappa架构是处理大数据流的两种流行架构模式,它们旨在处理大规模的数据流,并能够提供实时数据处理的能力。这两种架构各有特点,适用于不同的业务场景。Lambda架构Lambda架构由NathanMarz提出,旨在解决大数据系统中的复杂性问题,特别是需要处理大量实时数据的系统。Lamb......
  • C# 常见的Lambda表达式
    原文链接:https://blog.csdn.net/weixin_57718347/article/details/130384704Lambda表达式是C#中的一种匿名函数,通常用于简化代码和提高效率。以下是一些常见的Lambda表达式:1.基本Lambda表达式:(x)=>x+1;表示接受一个参数x,并返回x+1。2.带多个参数的Lambda表达式:(x,y)=>......
  • Spring Task 定时任务框架 以及cron表达式
    一:SpringTask介绍SpringTask是spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定位:定时任务框架作用:定时自动执行某段Java代码应用场景:·信用卡每月还款提醒·银行贷款每月还款提醒·火车票售票系统处理未支付订单·入职纪念日为用户......
  • 『LeetCode』10. 正则表达式匹配 Regular Expression Matching
    题目描述给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符'*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无法匹配"aa"整个字......
  • 实验1 c语言开发环境使用和数据类型、运算符、表达式
    task1`#include<stdio.h>intmain(){printf("o\n");printf("\n");printf("II\n");printf("o\n");printf("<H>\n");printf("II\n");return0;}``#include<stdio......