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

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

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

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux下U盘文件系统类型的识别以及挂载

    手上有装好文件系统的CF一只,插上卡套,类比于U盘。1.先进入/mnt/目录新建一个usb目录cd/mnt/mkidrusb2.fdisk-l,然后插上U盘,fdisk-l查看是否有新的硬盘添加上来了?这时候我若是挂载是不知道sdb的文件类型的,也不清楚该挂载sdbx几。不需挂载就能查看的命令:

    2022年4月14日
    47
  • 锐捷交换机配置ssh password登录命令[通俗易懂]

    锐捷交换机配置ssh password登录命令[通俗易懂]enableconfenableservicessh-serveripsshversion2usernameuser01privilege15password7mima211usernameuser01loginmodesshlinvty04loginlocaltransportinputallendwrite

    2022年6月22日
    207
  • hbase列表排序

    hbase列表排序

    2021年12月17日
    178
  • 前端vue面试题2021_vue框架面试题

    前端vue面试题2021_vue框架面试题一.自我介绍(我是谁来自哪里,今天来的目的,面试的岗位是什么,几年的工作经验,掌握的技术栈有哪些,开发过什么项目,项目中负责的板块是什么)面试官您好!我叫XXX,来自XXX,很荣幸能来我们公司面试,我从事前端开发有3年了,目前掌握的技术有html,css,js,ajax,vue,小程序,参与过各种类型的项目。我做过的项目有A,B,C,D,E那么最近做的一个项目是XXX在这个项目中我主要负责的板块是XXX面试官您这边还有什么想要了解的么。二.项目功能提问vue后台项目(这几个功能点要求

    2022年8月28日
    2
  • Logout_logoutAll

    Logout_logoutAll现在到注销。早些时候我们离开这个函数一片空白,现在是时候来填补它。在UsersController:注销()添加以下:$this->Session->setFlash(‘Good-Bye’);$this->redirect($this->Auth->logout());这个设置一个会话flash信息和日志使用身份验证用户的注销方法。身份验证的注销方法基本上删除身份验证会话密钥并返回一个可

    2025年8月25日
    4
  • python之内置函数

    一、数学运算类二、集合类操作三、逻辑判断四、反射compile(source,filename,mode[,flags[,dont_inherit]])五、IO操作

    2021年12月18日
    49

发表回复

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

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