一些初学者在工作中遇到 lambda 表达式时会感到困惑,说:“好吧,这是什么写法?”

和那些新手一样,这篇文章是为那些第一次遇到 lambda 表达式时感到困惑的人写的() => console.log。这次我将使用 JavaScript 解释 lambda 表达式,但同样的想法也可以应用于其他语言。

目录

  1. 阅读这篇文章你可以做什么
  2. 什么是“Lambda 表达式”?
  3. lambda 表达式的基础知识
  4. 允许您编写更短的 lambda 表达式的条件
    1. 案例1:函数只有一个参数
    2. 案例2:当有一个进程时
    3. Case3:当处理只是一个return语句时
  5. 重新确认允许您使用示例编写更短的 lambda 表达式的条件
  6. 结论

阅读这篇文章你可以做什么

您将能够读写 lambda 表达式!

什么是“Lambda 表达式”?

在 JavaScript 中,您可以将函数放入变量中或将其作为参数传递。

例如,像这样。

// Example1: Assign a function to a variable and execute
// Message "Hello world!" is displayed on the console
let showMessage = function (msg) {console.log(msg)
}
showMessage('Hello world!')// Example2: Pass a function as an argument
// After 1 second, the console will display "1 second has passed!"
setTimeout(function () {console.log('1 second has passed!')
}, 1000)

setTimeoutExample2 中出现的是一个函数,它在 X 毫秒后执行第一个参数接收到的函数(X 是第二个参数接收到的数字)。当您想要延迟函数调用时使用它。

在上面的示例中,我们创建了一个未命名的函数 likefunction (argument) {/ * some processing * /}并将其放入变量中或将其作为参数传递。这样的未命名函数称为匿名函数。

而“Lambda 表达式”是编写这个匿名函数的一种简洁方式。

lambda 表达式的基础知识

然后,我们将通过将其与如何编写匿名函数进行比较来了解如何编写 lambda 表达式。

让我们编写一个函数,它接受一个数字并以两种不同的方式返回该数字的两倍。

// anonymous function
function (num) {return num * 2
}// lambda expression
(num) => {return num * 2
}

如果你并排看,很容易看出他们有什么样的对应关系!

匿名函数写为function (argument) {/ * some processing * /},而 lambda 表达式写为(argument) => {/ * some processing * /}

Lambda 表达式有时被称为箭头函数,因为它们是使用箭头编写的。

由于使用了 lambda 表达式,8 个字符的“ function”现在变成了 2 个字符=>

工程师是一个不喜欢重复需要时间的事情的种族。“每次都写8字好麻烦!function它太长了!手累了!” 这样的想法可能催生了 Lambda 表达式。

好吧,对于那些认为“减少 6 个字符没什么大不了的”的人来说,这是个好消息。从现在开始,lambda 表达式的伟大之处就在于此。如果条件满足,可以改写得更短更简洁。

允许您编写更短的 lambda 表达式的条件

案例1:函数只有一个参数

()仅当 from lambda 表达式只有一个参数时,您才能省略它。

// before
(num) => {return num * 2
}// after
num => {return num * 2
}

哦,又减少了两个字符。

请注意,如果没有参数或者有两个或多个参数,则不能省略括号。

// 0 arguments
() => {console.log('cannot omit parentheses!')
}// 2 or more arguments
(a, b, c) => {return a + b + c
}

案例2:当有一个进程时

如果您的函数只有一个操作,您可以省略lambda 表达式中的花括号。

// before
() => {console.log('Hello world!')
}// after
() => console.log('Hello world!')

哦,缩短了!

顺便提一下,当有两行或多行时,大括号不能省略。这是一个示例供您参考。

// cannot omit curly braces because there are 2 lines
(a, b) => {let result = a + bconsole.log(result)
}

Case3:当处理只是一个return语句时

如果唯一的处理是返回语句,则return除了大括号之外,您还可以省略该字母。

// before
(a, b) => {return a + b
}// after
(a, b) => a + b

用 lambda 表达式编写要容易得多。

重新确认允许您使用示例编写更短的 lambda 表达式的条件

现在,作为到目前为止的回顾,让我们将接收一个数字并将其加倍的函数按顺序转换为 lambda 表达式。

// anonymous function
function (num) {return num * 2
}// lambda expression (no omit)
(num) => {return num * 2
}// omit () because there is only one argument
num => {return num * 2
}// omit {} because there is only one processing
num => return num * 2// omit letter 'return' because processing is only a return statement
num => num * 2

如何?你可以写得很短,不是吗?

最终形式num => num * 2是实现您想要实现的目标的直观表达,“将作为参数接收的值加倍”。

结论

在本文中,我尝试解释如何编写 lambda 表达式。希望读过的人能够自己读写lambda表达式。

但是,很多人可能只是看了这篇文章还没有意识到 lambda 表达式的便利性。

为这些人推荐以下文章。

正在上传…重新上传取消

联系

JavaScript中如何过滤数组元素【初学者易懂教程】

这些教程将允许您使用 lambda 表达式轻松操作数组的元素。

在本教程结束时,您将能够使用 lambda 表达式在一行中编写很酷的数组操作!

JavaScript lambda 表达式介绍相关推荐

  1. Python3中lambda表达式介绍

    Python3中的lambda表达式或lambda函数是匿名函数(anonymous function),意味着该函数没有名称.def关键字用于在Python3中创建一个普通函数,类似地,lambda ...

  2. Lambda表达式介绍

    Lambda表达式实际上是一个匿名函数.它包含表达式和语句,常用于创建委托或表达式目录树类型.所有Lambda表达式都是用Lambda运算符----------  =>,该运算符读为" ...

  3. 【java笔记】lambda表达式介绍和使用

    面向对象思想:   找能解决问题的对象 ,调用对象的方法 函数式编程思想:只要能获取到结果,强调做什么,而不是以什么形式去做 实现Runnable代码: public class Demo {publ ...

  4. Java 8 Lambda表达式官方入门教程(包括Lambda表达式介绍和语法)

    Java8做出了比较大的更新,支持了很多新特性,Java8引入的Lambda表达式这一特性,使Java8支持函数式编程,目前网上有较多的教程,本文整理了来自Oralce官方提供的教程. Lambda表 ...

  5. java8 lambda 视频_一文搞懂Java8 Lambda表达式(附带视频教程)

    Lambda表达式介绍 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.通过Lambda表达式,可以替代我们以前经常写的匿名内部类来实现接口.Lambda表达式本质是一个 ...

  6. Java8 Lambda 表达式

    可参考博文: http://blog.csdn.net/codejas/article/details/78810719 在学习Lambda 之前可以先了解一下java8 中关于接口的变化,以及函数式 ...

  7. lambda 两个list获取交集_《Java8 实战》笔记 - Lambda 表达式

    Lambda 表达式介绍 ​ 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它 有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表.这个定义够大的,让我 ...

  8. java里函数式表达式_java8入门(lambda表达式、函数式接口相关)

    1.java8介绍 (1)概念 是Java语言历史上变化最大的一个版本,其调整java编程向函数式风格迈进,不会对老版本产生影响 (2)优势 速度鞥更快 永久帯取消 HashMap的优化 Concur ...

  9. 用c#算成绩的总和_C# 基础知识系列- 6 Lambda表达式和Linq简单介绍

    前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...

  10. java lambda 局部变量_java Lambda表达式访问局部变量详细介绍

    此前给大家带来了java Lambda表达式访问成员变量详细介绍,下面就要继续给大家介绍java Lambda表达式访问局部变量的内容,一起通过简单的文章来进行了解吧. 对于成员变量的访问Lambda ...

最新文章

  1. 序列化:ProtoBuf与JSON的比较
  2. 关于scrollTop为0以及解决方法
  3. python二十三:生产者 消费者模型
  4. 『机房工程』弱电必备技能培训PPT/值得您分享
  5. 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块...
  6. PIC32单片机harmony开发环境 - SPI例程和代码分析
  7. React之函数式组件
  8. 计算机的未来科技作文700字,未来的科技与绿*的作文700字
  9. python 数据库查询结果邮件提醒_python读取postgresql数据库并发送相关提醒邮件
  10. HTTP Status 500 - An exception occurred processing JSP page /common/../left.jsp at line 20
  11. ZigBee TI ZStack CC2530 8.4 如何用高版本IAR打开低版本协议栈
  12. 贪心---区间覆盖问题(水题)
  13. Spring Core Container 源码分析七:注册 Bean Definitions
  14. 无监督学习之稀疏编码,自编码
  15. 【书影观后感 四】《围城》十年
  16. Django框架学习--4--分布式路由ORM基础
  17. ios11非越狱如何安装ipa
  18. 头歌JAVA数据结构答案
  19. FleaPHP 开发指南 - 5. 应用程序设置
  20. Python 数据分析:时间序列

热门文章

  1. ip rule 命令
  2. Codeforces - Garland
  3. 百度Java后端:MySQL索引老大难问题,精讲总结
  4. 青岛太极功夫扇舞动李村公园,社区健身节首个项目预赛举行
  5. 学习linux的第一天知识总结
  6. Grasshopper显示配色
  7. 基于 ANTLR 自己实现一个 SQL 解析器
  8. C语言实现【小游戏——飞机大战】
  9. 2018年新浪微博产品笔试题目
  10. java 开发脚本视频_你写脚本,AI自动剪视频:13分钟完成剪辑师7小时创作