拉姆达表达式/Lambda表达式/lambda expression 使用整理

拉姆达表达式/Lambda表达式/lambda expression 使用整理一、Lamabda表达式定义二、Lamabda表达式语法三、C#中Lamabda使用场景四、J

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、Lamabda表达式定义

Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。
Lambda表达式可以表示闭包,最早出现C#3.0,随着时间推移新版本JavaScript、Java8,Pathton等语言也都开始支持。

更多匿名函数介绍:https://blog.csdn.net/u011127019/article/details/113714566

 

二、Lamabda表达式语法

C#、JavaScript的语法一样: 用=> 符号声明

参数列表 => 语句或语句块

Jetbrains全家桶1年46,售后保障稳定

Java/C++的语法一样: 用-> 符号声明

参数列表 -> 语句或语句块

Pathon中:用:符号声明

 

三、C# 中Lamabda使用场景

1.拉姆达表达式 和 委托

public delegate void NoticeAll(string name);
static void LambdaTest()
{
    //拉姆达表达式 和  委托
    NoticeAll notice1 = (name1) =>
    {
        Console.WriteLine($"济南通知到了,{name1}");
    };
    notice1 += (name2) =>
    {
        Console.WriteLine($"聊城通知到了【{name2}】");
    };
    //触发委托的多播链
    notice1("张三");


    //拉姆达表达式回调
    GetSum(10, 20, res =>
    {
        Console.WriteLine("计算结果:" + res);
    });
}
static void GetSum(int num1, int num2, Action<int> onSuccess)
{
    int result = num1 + num2;
    if (onSuccess != null)
        onSuccess(result);
}

2.拉姆达表达式 和 Linq

        static void LambdaTest2()
        {
            //拉姆达表达式 和 Linq
            int[] nums = new int[] { 10, 1, 3, 5, -2 };
            int max = nums.Max();


            List<Student> list = new List<Student>() {
                new Student(){ID=1,Name="张三",Score=100 },
                new Student(){ID=2,Name="李四",Score=80 },
                new Student(){ID=3,Name="王五",Score=60 },
                new Student(){ID=4,Name="赵六",Score=120 },
            };
            // 找id=1 的学生
            Student studen1 = list.Where(q => q.Score == 1).FirstOrDefault();

            //找最高分
            decimal maxScore = list.Max(q => q.Score);

        }
        public class Student
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public decimal Score { get; set; }
        }

3.拉姆达表达式树 Expression

//定义表达式
Expression<Func<Student, bool>> lambda1 = q => q.Score > 60;
Expression<Func<Student, bool>> lambda2 = q => q.ID > 1;
//合并表达式
BinaryExpression temp = Expression.And(lambda1, lambda2);
Expression<Func<Student, bool>> lambda3 = Expression.Lambda<Func<Student, bool>>(temp);
//执行表达式
Student student2 = list.Where(lambda3.Compile()).FirstOrDefault();

四、JavaScript 表达式使用

nodejs中支持,新版本的浏览器中也都支持了。

function getSum(num1,num2,onSuccess){
    var result=num1+num2;
    onSuccess(result);
}
//回调函数,匿名
getSum(20,30,res=>{
    console.info('计算结果:'+res);
});

 

更多:

C# 委托、事件、回调 讲解

C# 匿名函数_C# 匿名函数使用整理

C# 匿名对象_C#匿名类型_C# 匿名对象使用整理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215542.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何用手机号申请163邮箱_163邮箱注册手机号注册

    如何用手机号申请163邮箱_163邮箱注册手机号注册如果你还没有邮箱,直接用手机号注册163邮箱,163.net是一款TOM的VIP邮箱,跟普通邮箱的区别是邮箱容量可以无限放大,来往的邮件信息能长期存储,国际邮件能快速收到和发出。怎么申请邮箱?163邮箱申请的好处用手机浏览器输入图片中的网址,进入邮箱官网在这里跟普通邮箱的区别是VIP邮箱有多个后缀选择,不像qq只能有一个。点击注册,接下来选择套餐,根据邮箱名字的位数、容量空间、大附件、群发数量,还有安全防护级别、误发邮件撤回次数、删除的邮件回复次数来选择套餐,不过不用担心,如果你现在已经有邮箱了

    2022年9月17日
    1
  • Intent.FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_CLE…「建议收藏」

    Intent.FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_CLE…「建议收藏」Intent.FLAG_ACTIVITY_NEW_TASK如果将intent设置这一项就会从历史队列中独立出来,生成一个新的activity的队列。FLAG_ACTIVITY_CLEAR_TOP就会将新站第一个activity在原来队列中位于他上面的activity都清空。例如有四个activityABCD,他们中都有一个按钮,按a的按钮会跳到b,b->c,c->d,d->b,如果acti

    2022年10月5日
    5
  • XMPP协议的原理介绍

    XMPP协议的原理介绍

    2021年12月16日
    50
  • Python练习题 025:判断回文数[通俗易懂]

    Python练习题 025:判断回文数[通俗易懂]【Python练习题025】 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。做题做到现在,这种题目已经很轻车熟路了。希望下一题能增加点难度啊~~~

    2022年7月5日
    23
  • Rsync详解_反向ssh

    Rsync详解_反向sshRsync介绍一、什么是rsyncrsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具。适用于多个平台。从软件名称可以看出来是远程同步的意思(remotesync)。可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像,远程备份等功能。  在同步备份时,默认情况下,rsync通过其独特的“quickcheck”算法,仅同步大小…

    2022年10月13日
    3
  • numpy转torch.tensor_tensorflow numpy

    numpy转torch.tensor_tensorflow numpy要对tensor进行操作,需要先启动一个Session,否则,我们无法对一个tensor比如一个tensor常量重新赋值或是做一些判断操作,所以如果将它转化为numpy数组就好处理了。下面一个小程序讲述了将tensor转化为numpy数组,以及又重新还原为tensor:importtensorflowastfimg1=tf.constant(value=[[[[1],[2],[3],[4…

    2022年10月9日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号