@@ -14,17 +14,17 @@ next-page: nested-functions
14
14
previous-page : mixin-class-composition
15
15
---
16
16
17
- 高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是一等类型值 ,所以允许定义高阶函数。
17
+ 高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民” ,所以允许定义高阶函数。
18
18
这里的术语可能有点让人困惑:使用函数作为参数,或者返回值为函数的“函数”和“方法”,我们均称之为“高阶函数”。
19
19
20
- 一个最简单的例子是Scala中对集合的高阶函数 ` map `
20
+ 最常见的一个例子是Scala中容器类(Collections)的高阶函数 ` map `
21
21
```
22
22
val salaries = Seq(20000, 70000, 40000)
23
23
val doubleSalary = (x: Int) => x * 2
24
24
val newSalaries = salaries.map(doubleSalary) // List(40000, 140000, 80000)
25
25
```
26
- 函数` doubleSalary ` 有一个整型参数` x ` ,返回` x * 2 ` 。一般来说,在` => ` 左边的元组是函数的参数列表,而在右边的表达式是函数的返回值 。
27
- 在第3行,函数` doubleSalary ` 被应用在数组 ` salaries ` 中的每一个元素。
26
+ 函数` doubleSalary ` 有一个整型参数` x ` ,返回` x * 2 ` 。一般来说,在` => ` 左边的元组是函数的参数列表,而右边表达式的值则为函数的返回值 。
27
+ 在第3行,函数` doubleSalary ` 被应用在列表 ` salaries ` 中的每一个元素。
28
28
29
29
为了简化压缩代码,我们可以使用匿名函数,直接作为参数传递给` map ` :
30
30
```
@@ -53,7 +53,7 @@ case class WeeklyWeatherForecast(temperatures: Seq[Double]) {
53
53
(注: ` x ` 是编译器生成的变量名,保证在其作用域是唯一的)。
54
54
55
55
## 接收函数作为参数的函数
56
- 使用高阶函数的一个原因是减少冗余的代码。比如说你想要写一个函数,提高一个人的工资。如果没有高阶函数 ,代码可能像这样:
56
+ 使用高阶函数的一个原因是减少冗余的代码。比方说需要写几个方法以通过不同方式来提升员工工资,若不使用高阶函数 ,代码可能像这样:
57
57
``` tut
58
58
object SalaryRaiser {
59
59
@@ -68,7 +68,7 @@ object SalaryRaiser {
68
68
}
69
69
```
70
70
71
- 注意这三个方法的差异仅仅是提升的比例不同,为了简化代码,你可以像这样把重复的代码提到一个高阶函数中 :
71
+ 注意这三个方法的差异仅仅是提升的比例不同,为了简化代码,其实可以把重复的代码提到一个高阶函数中 :
72
72
73
73
``` tut
74
74
object SalaryRaiser {
0 commit comments