没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
# 为什么完美的 lambda 表达式只有一行
使代码更容易阅读、测试和重用的单行 lambda 表达式
**标签:** Java,Java 平台
[原文链接](https://developer.ibm.com/zh/articles/j-java8idioms6/)
Venkat Subramaniam
发布: 2017-08-16
* * *
**关于本系列**
Java 8 是自 Java 语言诞生以来进行的一次最重大更新 包含了非常丰富的新功能,您可能想知道从何处开始着手了解它。在 [本系列](/zh/series/java-8-idioms/) 中,作者兼教师 Venkat Subramaniam 提供了一种惯用的 Java 8 编程方法:这些简短的探索会激发您反思您认为理所当然的 Java 约定,同时逐步将新方法和语法集成到您的程序中。
目前您已在本系列中了解到,函数组合的一个主要好处是它会获得富于表达的代码。编写简短的 lambda 表达式是实现这一表达能力的关键,但通常说起来容易做起来难。本文会加深您目前对创建单行 lambda 表达式的各个方面的了解。通过学习函数组合的结构和好处,您很快就会掌握完美的 lambda 表达式, — 一个仅短短一行的表达式。
## 编写 lambda 表达式的两种方法
众所周知,lambda 表达式是匿名函数,它们天生就很简洁。普通的函数或方法通常有 4 个元素:
- 一个名称
- 返回类型
- 参数列表
- 主体
在这里可以看到,lambda 表达式只有这 4 元素中的最后两个:
```
(parameter list) -> body
```
Show moreShow more icon
`"->”` 将参数列表与函数主体分离,旨在对给定参数进行处理。函数的主体可能是一个表达式或一条语句。下面给出了一个示例:
```
(Integer e) -> e * 2
```
Show moreShow more icon
在此代码中,主体只有一行:一个返回给定参数两次的表达式。信噪比很高,没有分号,也不需要 `return` 关键字。这就是一个理想的 lambda 表达式。
### 多行 lambda 表达式
在 Java™ 中,lambda 表达式的主体也可能是一个复杂的表达式或声明语句;也就是说,一个 lambda 表达式包含多行。在这种情况下,分号必不可少。如果 lambda 表达式返回一个结果,也会需要 `return` 关键字。下面给出了一个示例:
```
(Integer e) -> {
double sqrt = Math.sqrt(e);
double log = Math.log(e);
return sqrt + log;
}
```
Show moreShow more icon
本示例中的 lambda 表达式返回了 `sqrt` 和给定参数的 `log` 的和。因为主体包含多行,所以括号 (`{}`)、分号 (`;`) 和 `return` 关键字都是必需的。
如果感觉好像 Java 因为我们编写多行 lambda 表达式而惩罚我们, — 或许我们应该接受这样的暗示。
## 函数组合的强大功能
函数式编码风格利用了函数组合的表达能
点击阅读更多
资源评论
今年也要加油呀
- 粉丝: 16
- 资源: 312
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功