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:
Xingyu.Wang 2023-05-23 17:00:15 +08:00 committed by GitHub
commit 94941e588f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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