Skip to content

Commit 24787bb

Browse files
author
Ye Chen
committed
improvements according to review comments
1 parent 22e34da commit 24787bb

File tree

1 file changed

+5
-10
lines changed

1 file changed

+5
-10
lines changed

_zh-cn/tour/higher-order-functions.md

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,15 @@ next-page: nested-functions
1414
previous-page: mixin-class-composition
1515
---
1616

17-
高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民”,所以允许定义高阶函数。
18-
这里的术语可能有点让人困惑:使用函数作为参数,或者返回值为函数的“函数”和“方法”,我们均称之为“高阶函数”。
17+
高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民”,所以允许定义高阶函数。这里的术语可能有点让人困惑:使用函数作为参数,或者返回值为函数的“函数”和“方法”,我们均称之为“高阶函数”。
1918

20-
最常见的一个例子是Scala中容器类(Collections)的高阶函数`map`
19+
最常见的一个例子是Scala集合类(collections)的高阶函数`map`
2120
```
2221
val salaries = Seq(20000, 70000, 40000)
2322
val doubleSalary = (x: Int) => x * 2
2423
val newSalaries = salaries.map(doubleSalary) // List(40000, 140000, 80000)
2524
```
26-
函数`doubleSalary`有一个整型参数`x`,返回`x * 2`。一般来说,在`=>`左边的元组是函数的参数列表,而右边表达式的值则为函数的返回值。
27-
在第3行,函数`doubleSalary`被应用在列表`salaries`中的每一个元素。
25+
函数`doubleSalary`有一个整型参数`x`,返回`x * 2`。一般来说,在`=>`左边的元组是函数的参数列表,而右边表达式的值则为函数的返回值。在第3行,函数`doubleSalary`被应用在列表`salaries`中的每一个元素。
2826

2927
为了简化压缩代码,我们可以使用匿名函数,直接作为参数传递给`map`:
3028
```
@@ -48,9 +46,7 @@ case class WeeklyWeatherForecast(temperatures: Seq[Double]) {
4846
def forecastInFahrenheit: Seq[Double] = temperatures.map(convertCtoF) // <-- passing the method convertCtoF
4947
}
5048
```
51-
在这个例子中,方法`convertCtoF`被传入`forecastInFahrenheit`
52-
这是可以的,因为编译器强制将方法`convertCtoF`转成了函数`x => convertCtoF(x)`
53-
(注: `x`是编译器生成的变量名,保证在其作用域是唯一的)。
49+
在这个例子中,方法`convertCtoF`被传入`forecastInFahrenheit`。这是可以的,因为编译器强制将方法`convertCtoF`转成了函数`x => convertCtoF(x)` (注: `x`是编译器生成的变量名,保证在其作用域是唯一的)。
5450

5551
## 接收函数作为参数的函数
5652
使用高阶函数的一个原因是减少冗余的代码。比方说需要写几个方法以通过不同方式来提升员工工资,若不使用高阶函数,代码可能像这样:
@@ -106,5 +102,4 @@ val query = "id=1"
106102
val url = getURL(endpoint, query) // "https://www.example.com/users?id=1": String
107103
```
108104

109-
注意urlBuilder的返回类型是`(String, String) => String`,这意味着返回的匿名函数有两个String参数,返回一个String。
110-
在这个例子中,返回的匿名函数是`(endpoint: String, query: String) => s"https://www.example.com/$endpoint?$query"`
105+
注意urlBuilder的返回类型是`(String, String) => String`,这意味着返回的匿名函数有两个String参数,返回一个String。在这个例子中,返回的匿名函数是`(endpoint: String, query: String) => s"https://www.example.com/$endpoint?$query"`

0 commit comments

Comments
 (0)