前言
什么是函数?
先了解函数的概念; 函数是一种最基本的任务,一个大型程序就是一个顶层函数调用若干底层函数,这些被调用的函数又可以调用其他函数,即大任务被一层层拆解并执行。所以函数就是面向过程的程序设计的基本单元。
什么是函数式编程?
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
起因
函数式编程最早是数学家 阿隆佐·邱奇 研究的一套函数变换逻辑,又称 Lambda Calculus(λ-Calculus),所以也经常把函数式编程称为 Lambda 计算。
什么是 Lambda?
Lambda 表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。
- 匿名:没有一个确定的名称
- 函数:它不属于一个特定的类,但是却有参数列表、函数主体、返回类型、异常列表
- 传递:可以作为参数传递给方法、或者存储在变量中
- 简洁:不需要写很多模板代码
Lambda 表达式的语法格式
(参数类型 参数名) -> {
方法体;
return 返回值;
}
(parameters) -> expression
或
(parameters) ->{ statements; }
格式解释:
( ) 小括号中的参数和之前方法的参数写法一样,可以写任意个参数,如果多个参数,要使用逗号隔开。
-> 是一个运算符,表示指向性动作。
{ } 大括号中的方法体以及 return 返回值的写法和之前方法的大括号中的写法一样。
Lambda 表达式的重要特征
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
Lambda 的弊端
Lambda 表达式虽然带来了代码的简洁,但是也有其局限性:
- 可读性差,与啰嗦的但是清晰的匿名类代码结构比较起来,Lambda 表达式一旦变得比较长,就难以理解;
- 不便于调试,很难在 Lambda 表达式中增加调试信息,比如日志;
- 版本支持,Lambda 表达式在 JDK8 版本中才开始支持,如果系统使用的是以前的版本,考虑系统的稳定性等原因,而不愿意升级,那么就无法使用。
- Lambda 比较适合用在简短的业务代码中,并不适合用在复杂的系统中,会加大维护成本。
Note:
欢迎点赞,留言,转载请在文章页面明显位置给出原文链接
知者,感谢您在茫茫人海中阅读了我的文章
没有个性 哪来的签名!
详情请关注点我
持续更新中
© 2020 11 - Guyu.com | 【版权所有 侵权必究】 |