diff --git a/src/ch18-03-pattern-syntax.md b/src/ch18-03-pattern-syntax.md
index a442111..134f96a 100644
--- a/src/ch18-03-pattern-syntax.md
+++ b/src/ch18-03-pattern-syntax.md
@@ -69,11 +69,11 @@ match x {
}
```
-This prints `one or two`.
+上面的代码会打印`one or two`.
-### Matching Ranges of Values with `...`
+### 通过`...`匹配值的范围
-You can match an inclusive range of values with `...`:
+你可以用`...`匹配一个值包含的范围:
```rust
let x = 5;
@@ -84,10 +84,9 @@ match x {
}
```
-If `x` is 1, 2, 3, 4, or 5, the first arm will match.
+上面的代码中, 如果`x`是1、 2、 3、 4或5, 第一个分支就会匹配.
-Ranges are only allowed with numeric values or `char` values. Here's an example
-using ranges of `char` values:
+范围只能是数字或`char`类型的值. 下面是一个使用`char`类型值范围的例子:
```rust
let x = 'c';
@@ -99,14 +98,11 @@ match x {
}
```
-This will print `early ASCII letter`.
+上面的代码会打印`early ASCII letter`.
-### Destructuring to Break Apart Values
+### 解构提取值
-Patterns can be used to *destructure* structs, enums, tuples, and references.
-Destructuring means to break a value up into its component pieces. Listing
-18-11 shows a `Point` struct with two fields, `x` and `y`, that we can break
-apart by using a pattern with a `let` statement:
+模式可以用来*解构*(*destructure*)结构、枚举、元组和引用. 解构意味着把一个值分解成它的组成部分. 例18-11中的结构`Point`有两个字段`x`和`y`, 我们可以通过一个模式和`let`语句来进行提取:
Filename: src/main.rs
@@ -125,15 +121,9 @@ fn main() {
}
```
-Listing 18-11: Destructuring using struct field
-shorthand
+例18-11: 用结构的字段来解构
-This creates the variables `x` and `y` that match the `x` and `y` of `p`. The
-names of the variables must match the names of the fields to use this
-shorthand. If we wanted to use names different than the variable names, we can
-specify `field_name: variable_name` in the pattern. In Listing 18-12, `a` will
-have the value in the `Point` instance's `x` field and `b` will have the value
-in the `y` field:
+上面的代码创建了匹配`p`中的`x`和`y`字段的变量`x`和`y`. 变量的名字必须匹配使用了这个写法中的字段. 如果我们想使用不同的变量名字, 我们可以在模式中使用`field_name: variable_name`. 在例18-12中, `a`会拥有`Point`实例的`x`字段的值, `b`会拥有`y`字段的值:
Filename: src/main.rs
@@ -152,13 +142,9 @@ fn main() {
}
```
-Listing 18-12: Destructuring struct fields into variables
-with different names than the fields
+例18-12: 把结构解构到与字段不同名的变量中
-We can also use destructuring with literal values in order to test and use
-inner parts of a value. Listing 18-13 shows a `match` statement that determines
-whether a point lies directly on the `x` axis (which is true when `y = 0`), on
-the `y` axis (`x = 0`), or neither:
+为了测试和使用一个值内部的某个属性, 我们也可以用字面量来解构. 例18-13用一个`match`语句来判断一个点是位于`x`(此时`y` = 0)轴上还是在`y`(此时`x` = 0)轴上或者不在两个轴上面:
```rust
# struct Point {
@@ -177,18 +163,13 @@ fn main() {
}
```
-Listing 18-13: Destructuring and matching literal values
-in one pattern
+例18-13: 解构和匹配一个模式中的字面量
-This will print `On the y axis at 7` since the value `p` matches the second arm
-by virtue of `x` having the value 0.
+上面的代码会打印`On the y axis at 7`, 因为`p`的`x`字段的值是0, 这正好匹配第二个分支.
-We used destructuring on enums in Chapter 6, such as in Listing 6-5 where we
-destructured an `Option` using a `match` expression and added one to the
-inner value of the `Some` variant.
+在第6章中我们对枚举进行了解构, 比如例6-5中, 我们用一个`match`表达式来解构一个`Option`, 其中被提取出来的一个是`Some`内的变量.
-When the value we're matching against a pattern contains a reference, we can
-specify a `&` in the pattern in order to separate the reference and the value.
+当我们正匹配的值在一个包含了引用的模式里面时, 为了把引用和值分割开我们可以在模式中指定一个`&`符号.
This is especially useful in closures used with iterators that iterate over
references to values when we want to use the values in the closure rather than
the references. Listing 18-14 shows how to iterate over references to `Point`