Merge pull request #172 from JesseAtSZ/patch-3

Update tuple.md
pull/176/head
Sunface 3 years ago committed by GitHub
commit 365dfe746f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,8 +1,8 @@
# 元组 # 元组
元组是由多种类型组合到一起形成的,因此它是复合类型,元组的长度是固定的。 元组是由多种类型组合到一起形成的,因此它是复合类型,元组的长度是固定的,元组中元素的顺序也是固定的
通过以下语法可以创建一个元组: 可以通过以下语法创建一个元组:
```rust ```rust
fn main() { fn main() {
let tup: (i32, f64, u8) = (500, 6.4, 1); let tup: (i32, f64, u8) = (500, 6.4, 1);
@ -25,11 +25,11 @@ fn main() {
} }
``` ```
上述代码首先创建一个元组,然后将其绑定到`tup`上,接着使用`let (x, y, z) = tup;`来完成一次模式匹配,因为元组是`(n1,n2,n3)`形式的,因此我们用一模一样的`(x,y,z)`形式来进行匹配,然后把元组中对应的值绑定到变量`x``y``z`上,这就是解构:用同样的形式把一个复杂对象中的值匹配出来。 上述代码首先创建一个元组,然后将其绑定到`tup`上,接着使用`let (x, y, z) = tup;`来完成一次模式匹配,因为元组是`(n1,n2,n3)`形式的,因此我们用一模一样的`(x,y,z)`形式来进行匹配,元组中对应的值会绑定到变量`x``y``z`上。这就是解构:用同样的形式把一个复杂对象中的值匹配出来。
### 用`.`来访问元组 ### 用`.`来访问元组
模式匹配可以让我们一次性把元组中的值全部或者部分获取出来如果想要访问某个特定元素那模式匹配就略显繁琐对此Rust提供了`.`的访问方式: 模式匹配可以让我们一次性把元组中的值全部或者部分获取出来,如果想要访问某个特定元素那模式匹配就略显繁琐对此Rust提供了`.`的访问方式:
```rust ```rust
fn main() { fn main() {
let x: (i32, f64, u8) = (500, 6.4, 1); let x: (i32, f64, u8) = (500, 6.4, 1);
@ -64,6 +64,6 @@ fn calculate_length(s: String) -> (String, usize) {
`calculate_length`函数接收`s1`字符串的所有权,然后计算字符串的长度,接着把字符串所有权和字符串长度再返回给`s2`和`len`变量。 `calculate_length`函数接收`s1`字符串的所有权,然后计算字符串的长度,接着把字符串所有权和字符串长度再返回给`s2`和`len`变量。
对于其他语言元组可以用来声明一个3D点,例如`Point(10,20,30)`虽然使用Rust元组也可以做到`(10,20,30)`,但是这样写有个非常重大的缺陷: 在其他语言中,可以用结构体来声明一个三维空间中的点,例如`Point(10,20,30)`虽然使用Rust元组也可以做到`(10,20,30)`,但是这样写有个非常重大的缺陷:
**不具备任何清晰的含义**,在下一章节中,会提到一种`元组结构体`,可以解决这个问题。 **不具备任何清晰的含义**,在下一章节中,会提到一种与元组类似的结构体,`元组结构体`,可以解决这个问题。

Loading…
Cancel
Save