Rust中的数据类型(复合类型——元组 与 数组)

复合类型(compound type)可以将多个不同类型的值组合为一个类型。Rust中提供了两种内置的复合数据类型:元组(tuple)数组(array)

元组类型

元组是一个具有 固定长度 的数据集合 —— 你无法在声明结束后增加或减少其中的元素数量。

元素使用逗号分隔放入一对圆括号中。元组每个位置的值都有一个类型,这些类型不需要是相同的。例如:

let tup: (i32, f64, u8) = (123, 6.6, 1);

由于一个元组被视作一个单独的复合元素,所以这里的变量tup被绑定到了整个元组上。为了从元组中获得单个的值,我们可以想下面这样使用模式匹配来解构(destructuring)元组:

fn main() {
    let tup: (i32, f64, u8) = (123, 6.6, 1);
    
    let (x, y, z) = tup;

    println!("the value of y is: {}", y);   // 输出 the value of y is: 6.6
}

除了解构,我们还可以通过索引并使用点号(.)来访问元组中的值:

fn main() {
    let tup: (i32, f64, u8) = (123, 6.6, 1);
    let x = tup.0;
    let y = tup.1;
    let z = tup.2;
    println!("x = {}, y = {}, z = {}", x, y, z); // 输出 x = 123, y = 6.6, z = 1
}

这段程序首先创建了一个元组tup,随后又通过索引访问元组的各个元素,并将它们的值绑定到新的变量上。元素的索引从 \(0\) 开始。

数组类型

Rust中的数组:(1)数组元素必须是相同的类型;(2)数组拥有固定的长度,一旦声明就不能随意更改大小。

在Rust中,将逗号分隔的值放置在一对方括号内来创建一个数组:

let arr = [1, 2, 3, 4, 5];

定义数组是可以指定数组类型和大小,如:

let arr: [i32; 5] = [1, 2, 3, 4, 5];

分号前的 i32 表示数组内所有元素的类型,分号后的 5 表明当前的数组包含 5 个元素。

若声明的数组具有相同数值,可以按照如下形式定义:

let arr = [3; 5];

相当于定义了一个大小为5且数组元素均为5的数组arr。

对于一个数组 arr,可以通过索引访问其中的元素,比如 arr[2] 为数组 arr 中下标为 2 的元素。数组元素下标从 0 开始。例如下面的程序:

fn main() {
    let a = [1, 2, 3, 4, 5];
    println!("a[0] = {}, a[1] = {}", a[0], a[1]); // 输出 a[0] = 1, a[1] = 2
}
posted @ 2022-01-21 20:14  鱼又悲  阅读(693)  评论(0编辑  收藏  举报