拉姆达表达式(Lambda Expressions)[通俗易懂]

拉姆达表达式(Lambda Expressions)[通俗易懂]让我们先看一个简单的拉姆达表达式:x=>x/2这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值。通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不代表拉姆达表达式是和类型无关的。在实际运用上,编译器会根据表达式的上下文判断上述x的类型及返回值的类型。例如: usingSystem;usingS


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

让我们先看一个简单的拉姆达表达式:

x=>x/2

这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值。

通过这个拉姆达表达式,我们可以看到:

 

这个表达式没有任何类型信息,但这并不代表拉姆达表达式是和类型无关的。在实际运用上,编译器会根据表达式的上下文判断上述x的类型及返回值的类型。例如:

 

using System;
using System.Linq;
public class LambdaTest
{

     static void Main() {

     Func<int, double> expr = x => x / 2;
     int someNumber = 9;
     Console.WriteLine( “Result: {0}”, expr(someNumber) );
  }
}

 

上述代码中,加粗部分为拉姆达表达式。Func<>为 delegate System.Func<T,TResult>

上述运行结果为:Result:4

根据我们学习的数学知识,9/2应当结果是4.5,为什么上述结果会是4而不是4.5呢?是因为x是整型,x/2的结果也是整型,虽然在上述我们拉姆达表达式中,我们指明结果是double,但x/2这个表达式,由于x是整型,故计算出来的结果已被截掉小数,然后再转换为double,故结果是4,而不是4.5

 

要使结果是4.5,则只需定义上述相关语句为 Func<double,double> expr = x => x / 2 即可。

 

无参数的拉姆达表达式:

using System;
using System.Linq;
public class LambdaTest
{

static void Main() {

int counter = 0;
WriteStream( () => counter++ );
Console.WriteLine( “Final value of counter: {0}”,counter );

}
static void WriteStream( Func<int> counter ) {

   for( int i = 0; i < 10; ++i ) {

    Console.Write( “{0}, “, counter() );
  }
    Console.WriteLine();
  }
}

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

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

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

相关推荐

  • Checked异常和Runtime异常的区别_JAVA运行时异常

    Checked异常和Runtime异常的区别_JAVA运行时异常目录一、运行时异常1、什么是RuntimeExceptioin2、运行时异常的特点3、如何运用运行时异常二、运行时异常和ckecked异常的区别1、机制上2、逻辑上一、运行时异常1、什么是运行时异常程序在运行过程中出现的异常,RumtimeException是Exception的一个子类我们可以查看Jav

    2022年9月30日
  • 爬虫(第一篇) IP代理池

    爬虫(第一篇) IP代理池搞虫子的都知道,IP代理是必要的方法,为什么?这个大家知道就好了,最近写了个IP代理池,给大家围观一下:开始。首先咱们找到一个免费的IP代理网站,读取人家的数据,但是注意了,注意频率别把人家给搞崩了第一:线程池,多个线程检测packagecom.*.util.thread;importorg.apache.log4j.Logger;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Ex

    2022年6月7日
  • 如何使用阿里云的NAS云文件存储服务「建议收藏」

    如何使用阿里云的NAS云文件存储服务「建议收藏」1.NAS云存储阿里云官方文档阿里云文件存储NAS(ApsaraFileStorage)是面向阿里云ECS实例、E-HPC和容器服务等计算节点的文件存储服务。它是一种可共享访问、弹性扩展、高可靠以及高性能的分布式文件系统。NAS基于POSIX文件接口,天然适配原生操作系统,提供共享访问,同时保证数据一致性和锁互斥。它提供了简单的可扩展文件存储以供与ECS配合使用,多个ECS实例可以同时访问NAS文件系统,并且存储容量会随着您添加和删除文件而自动弹性增长和收缩,为在多个实例或服务器上运行产生的工作负

    2022年6月16日
  • sql 聚合函数对 null 的处理[通俗易懂]

    sql 聚合函数对 null 的处理[通俗易懂]聚合函数计数类型(count)SELECTCOUNT(*)FROM(SELECT1ASnumUNIONALLSELECT1ASnumUNIONALLSELECT2ASnumUNIONALLSELECTNULLASnum);SELECTCO

    2022年6月21日
  • 编程语言的主要类型

    转:编程语言的主要类型,声明式编程,命令式编程()和函数式编程的区别2016年12月18日11:59:07 xuqinggangsls 阅读数:5242 标签:&#

    2022年3月29日
  • 计算机常用1700英语单词及缩写_计算机必背英语单词

    计算机常用1700英语单词及缩写_计算机必背英语单词 1.filen. 文件;v. 保存文件     2.commandn. 命令,指令     3.usev. 使用,用途     4.programn. 程序     5.linen.(数据,程序)行,线路     6.ifconj. 如果     7.displayvt. 显示,显示器     8.setv. 设置,n…

    2022年9月25日

发表回复

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

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