Skip to content

Commit 8e21623

Browse files
committed
Fix some places according to liufengyun's suggestion
1 parent e755be5 commit 8e21623

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

_zh-cn/tour/extractor-objects.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ next-page: generic-classes
1414
previous-page: regular-expression-patterns
1515
---
1616

17-
提取器对象是一个包含有 `unapply` 方法的单例对象. `apply` 方法就像一个构造器, 接受参数然后创建一个实例对象, 反之 `unapply` 方法接受一个实例对象然后返回最初创建它所用的参数. 提取器常用在模式匹配和偏函数中.
17+
提取器对象是一个包含有 `unapply` 方法的单例对象`apply` 方法就像一个构造器接受参数然后创建一个实例对象反之 `unapply` 方法接受一个实例对象然后返回最初创建它所用的参数提取器常用在模式匹配和偏函数中
1818

1919
```tut
2020
import scala.util.Random
@@ -36,32 +36,32 @@ customer1ID match {
3636
}
3737
```
3838

39-
这里 `apply` 方法用 `name` 创建一个 `CustomerID` 字符串. `unapply` 方法正好相反, 它返回 `name` . 当我们调用 `CustomerID("Sukyoung")` , 其实是调用了 `CustomerID.apply("Sukyoung")` 的简化语法. 当我们调用 `case CustomerID(name) => println(name)`, 就是在调用提取器方法.
39+
这里 `apply` 方法用 `name` 创建一个 `CustomerID` 字符串`unapply` 方法正好相反它返回 `name` 当我们调用 `CustomerID("Sukyoung")` 其实是调用了 `CustomerID.apply("Sukyoung")` 的简化语法当我们调用 `case CustomerID(name) => println(name)`就是在调用提取器方法
4040

41-
因为在定义一个值的时候可以使用一个模式来引入一个新的变量, 提取器可以用来初始化这个变量, 使用 unapply 方法来生成值.
41+
因为变量定义可以使用模式引入变量,提取器可以用来初始化这个变量使用 unapply 方法来生成值
4242

4343
```tut
4444
val customer2ID = CustomerID("Nico")
4545
val CustomerID(name) = customer2ID
4646
println(name) // prints Nico
4747
```
4848

49-
上面的代码等价于 `val name = CustomerID.unapply(customer2ID).get`.
49+
上面的代码等价于 `val name = CustomerID.unapply(customer2ID).get`
5050

5151
```tut
5252
val CustomerID(name2) = "--asdfasdfasdf"
5353
```
5454

55-
如果没有匹配的值, 会抛出 `scala.MatchError`:
55+
如果没有匹配的值会抛出 `scala.MatchError`
5656

5757
```tut:fail
5858
val CustomerID(name3) = "-asdfasdfasdf"
5959
```
6060

61-
`unapply` 方法的返回值应当符合下面的某一条:
61+
`unapply` 方法的返回值应当符合下面的某一条
6262

63-
* 如果只是用来测试, 返回一个 `Boolean` 类型的值. 例如 `case even()`.
64-
* 如果只是用来提取单个 T 类型的值, 返回 `Option[T]`.
65-
* 如果你想要提取多个值, 类型分别为 `T1,...,Tn`, 把它们放在一个可选的元祖中 `Option[(T1,...,Tn)]`.
63+
* 如果只是用来判断真假,返回一个 `Boolean` 类型的值例如 `case even()`
64+
* 如果只是用来提取单个 T 类型的值返回 `Option[T]`
65+
* 如果你想要提取多个值类型分别为 `T1,...,Tn`,把它们放在一个可选的元组中 `Option[(T1,...,Tn)]`
6666

67-
有时, 要提取的值的数量不是固定的, 因此我们想根据输入来返回随机数量的值. 这种情况下, 你可以用 `unapplySeq` 方法来定义提取器, 此方法返回 `Option[Seq[T]]`. 常见的例子有, `case List(x, y, z) =>` 来解构一个列表 `List`, 以及用一个正则表达式 `Regex` 来分解一个字符串 `String`, 例如 `case r(name, remainingFields @ _*) =>`.
67+
有时要提取的值的数量不是固定的因此我们想根据输入来返回随机数量的值这种情况下你可以用 `unapplySeq` 方法来定义提取器此方法返回 `Option[Seq[T]]`常见的例子有`case List(x, y, z) =>` 来解构一个列表 `List`以及用一个正则表达式 `Regex` 来分解一个字符串 `String`例如 `case r(name, remainingFields @ _*) =>`

0 commit comments

Comments
 (0)