mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-03-21 02:10:11 +08:00
Merge pull request #29432 from wxy/20230417.1-⭐️⭐️-Rust-Basics-Series-4-Arrays-and-Tuples-in-Rust
RP:published/20230417.1 ⭐️⭐️ Rust Basics Series 4 Arrays and Tuples in Rust.md
This commit is contained in:
commit
94941e588f
@ -3,14 +3,18 @@
|
||||
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "Cubik65536"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-15837-1.html"
|
||||
|
||||
Rust 基础系列 #4: Rust 中的数组和元组
|
||||
======
|
||||
|
||||
在上一篇文章中,你学习到了 Rust 中的标量数据类型。它们是整型、浮点数、字符和布尔值。
|
||||
![][0]
|
||||
|
||||
> 在 Rust 系列的第四篇中,学习复合数据类型、数组和元组。
|
||||
|
||||
在上一篇文章中,你学习到了 Rust 中的 [标量数据类型][1]。它们是整型、浮点数、字符和布尔值。
|
||||
|
||||
在本文中,我们将会看看 Rust 编程语言中的复合数据类型。
|
||||
|
||||
@ -20,8 +24,8 @@ Rust 基础系列 #4: Rust 中的数组和元组
|
||||
|
||||
Rust 编程语言中有两种这样的数据类型:
|
||||
|
||||
- **数组**:存储相同类型的多个值。
|
||||
- **元组**:存储多个值,可以是相同的类型,也可以是不同的类型。
|
||||
- <ruby>数组<rt>Array</rt></ruby>:存储相同类型的多个值。
|
||||
- <ruby>元组<rt>Tuple</rt></ruby>:存储多个值,可以是相同的类型,也可以是不同的类型。
|
||||
|
||||
让我们了解一下它们吧!
|
||||
|
||||
@ -30,7 +34,7 @@ Rust 编程语言中有两种这样的数据类型:
|
||||
Rust 编程语言中的数组具有以下特性:
|
||||
|
||||
- 每一个元素都必须是相同的类型
|
||||
- 数组只有一个固定的长度
|
||||
- 数组有一个固定的长度
|
||||
- 数组存储在堆栈中,即其中存储的数据可以被 _迅速_ 访问
|
||||
|
||||
创建数组的语法如下:
|
||||
@ -63,7 +67,7 @@ fn main() {
|
||||
}
|
||||
```
|
||||
|
||||
这里,我定义了一个字符数组和另一个存储 `i32` 类型的值的数组。`greeting` 数组以单独字符的形式存储了字符串 "Hello world!" 的字符。`pi` 数组以单独数字的形式存储了圆周率小数点后的前 10 位数字。
|
||||
这里,我定义了一个字符数组和另一个存储 `i32` 类型的值的数组。`greeting` 数组以单独字符的形式存储了字符串 `"Hello world!"` 的字符。`pi` 数组以单独数字的形式存储了圆周率小数点后的前 10 位数字。
|
||||
|
||||
然后,我使用 `for` 循环打印了 `greeting` 数组的每个字符。(我很快就会讲到循环。)然后,我打印了 `pi` 数组的前 4 个值。
|
||||
|
||||
@ -78,7 +82,7 @@ Pi: 3.11415
|
||||
let variable_name = [y; x];
|
||||
```
|
||||
|
||||
来看一个演示...
|
||||
来看一个演示……
|
||||
|
||||
```
|
||||
fn main() {
|
||||
@ -99,9 +103,7 @@ fn main() {
|
||||
10 10 10 10 10
|
||||
```
|
||||
|
||||
🤸
|
||||
|
||||
作为联系,尝试创建一个长度为 _x_ 的数组,然后尝试访问数组的第 _x+1_ 个元素。看看会发生什么。
|
||||
> 🤸 作为练习,尝试创建一个长度为 _x_ 的数组,然后尝试访问数组的第 _x+1_ 个元素。看看会发生什么。
|
||||
|
||||
### Rust 中的元组
|
||||
|
||||
@ -140,11 +142,11 @@ fn main() {
|
||||
|
||||
在上面的代码中,我在第 2 行和第 3 行声明了两个元组。它们只包含我当时想到的随机值。但是仔细看,两个元组中每个元素的数据类型都不同。然后,在第 5 行和第 6 行,我打印了两个元组的每个元素。
|
||||
|
||||
在第 9 行,我声明了一个名为 `pixel` 的元组,它有 3 个元素。每个元素都是组成像素的颜色红色、绿色和蓝色的亮度值。这个范围是从 0 到 255。所以,理想情况下,我会声明类型为 `(u8, u8, u8)`,但是在学习代码时不需要这样优化 ;)
|
||||
在第 9 行,我声明了一个名为 `pixel` 的元组,它有 3 个元素。每个元素都是组成像素的颜色红色、绿色和蓝色的亮度值。这个范围是从 0 到 255。所以,理想情况下,我会声明类型为 `(u8, u8, u8)`,但是在学习代码时不需要这样优化 ; )
|
||||
|
||||
然后,在第 10 行,我“解构”了 `pixel` 元组的每个值,并将其存储在单独的变量 `red`、`green` 和 `blue` 中。然后,我打印了 `red`、`green` 和 `blue` 变量的值,而不是 `pixel` 元组的值。
|
||||
|
||||
让我们看看输出...
|
||||
让我们看看输出……
|
||||
|
||||
```
|
||||
a.0: 38, a.1: 923.329, a.2: true
|
||||
@ -152,19 +154,19 @@ b.0: r, b.1: 43, b.2: 3.14, b.3: false
|
||||
red: 50, green: 0, blue: 200
|
||||
```
|
||||
|
||||
看起来不错 :)
|
||||
看起来不错 : )
|
||||
|
||||
### 额外内容:切片
|
||||
|
||||
准确的来说,切片不是 Rust 中的复合数据类型。相反,切片是现有复合数据类型的 _切片_。
|
||||
准确的来说,<ruby>切片<rt>Slice</rt></ruby> 不是 Rust 中的复合数据类型。相反,切片是现有复合数据类型的 “切片”。
|
||||
|
||||
一个切片由三个元素组成:
|
||||
|
||||
- 一个初始索引
|
||||
- 切片运算符 (`..` 或 `..=`)
|
||||
- 切片运算符(`..` 或 `..=`)
|
||||
- 一个结束索引
|
||||
|
||||
接下来是数组切片的一个示例。
|
||||
接下来是数组切片的一个示例:
|
||||
|
||||
```
|
||||
fn main() {
|
||||
@ -219,6 +221,8 @@ fn main() {
|
||||
|
||||
在下一章中,你将学习如何在 Rust 程序中使用函数。敬请关注。
|
||||
|
||||
*(题图:MJ/22a0d143-2216-439f-8e1d-abd94cdfdbd0)*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/rust-arrays-tuples/
|
||||
@ -226,9 +230,11 @@ via: https://itsfoss.com/rust-arrays-tuples/
|
||||
作者:[Pratham Patel][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[Cubik65536](https://github.com/Cubik65536)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/pratham/
|
||||
[b]: https://github.com/lkxed/
|
||||
[1]: https://linux.cn/article-15811-1.html
|
||||
[0]: https://img.linux.net.cn/data/attachment/album/202305/23/165645ljp41i87p7xcpx1z.jpg
|
Loading…
Reference in New Issue
Block a user