Merge pull request #39 from YangFong/dev-ch08-01

doc: Optimize the description at ch08-01
This commit is contained in:
Aaran Xu 2022-01-12 02:27:32 +08:00 committed by GitHub
commit dbd26900ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,6 @@
## vector 用来储存一系列的值
我们要讲到的第一个类型是 `Vec<T>`,也被称为 *vector*。vector 允许我们在一个单独的数据结构中储存多于一个的值,它在内存中彼此相邻地排列所有的值。vector 只能储存相同类型的值。它们在拥有一系列项的场景下非常实用,例如文件中的文本行或购物车中商品的价格。
我们要讲到的第一个类型是 `Vec<T>`,也被称为 *vector*。vector 允许我们在一个单独的数据结构中储存多个值,所有值在内存中彼此相邻排列。vector 只能储存相同类型的值。它们在拥有一系列项的场景下非常实用,例如文件中的文本行或购物车中商品的价格。
### 新建 vector
@ -12,7 +12,7 @@ let v: Vec<i32> = Vec::new();
<span class="caption">示例 8-1新建一个空的 vector 来储存 `i32` 类型的值</span>
注意这里我们增加了一个类型注解。因为没有向这个 vector 中插入任何值Rust 并不知道我们想要储存什么类型的元素。这是一个非常重要的点。vector 是用泛型实现的,第十章会涉及到如何对你自己的类型使用它们。现在,所有你需要知道的就是 `Vec` 是一个由标准库提供的类型,它可以存放任何类型,而当 `Vec` 存放某个特定类型时,那个类型位于尖括号中。在示例 8-1 中,我们告诉 Rust `v` 这个 `Vec` 将存放 `i32` 类型的元素。
注意这里我们增加了一个类型注解。因为没有向这个 vector 中插入任何值Rust 并不知道我们想要储存什么类型的元素。这一点非常重要。vector 是用泛型实现的,第十章会涉及到如何对你自己的类型使用它们。现在,我们知道 `Vec` 是一个由标准库提供的类型,它可以存放任何类型,而当 `Vec` 存放某个特定类型时,那个类型位于尖括号中。在示例 8-1 中,我们告诉 Rust `v` 这个 `Vec` 将存放 `i32` 类型的元素。
在更实际的代码中,一旦插入值 Rust 就可以推断出想要存放的类型,所以你很少会需要这些类型注解。更常见的做法是使用初始值来创建一个 `Vec`,而且为了方便 Rust 提供了 `vec!` 宏。这个宏会根据我们提供的值来创建一个新的 `Vec`。示例 8-2 新建一个拥有值 `1`、`2` 和 `3``Vec<i32>`