4. 元组与数组

任务说明

本案例要求使用 Rust 创建并操作元组(tuple)与数组(array),覆盖三种核心操作:索引访问、解构绑定和遍历。最终通过一个包含元组数组的复合数据结构,演示如何组合使用这些操作来提取和处理数据。

代码实现

fn main() {
    // 1. 创建元组:包含学生姓名、年龄和分数
    let student = ("Alice", 20, 87.5);
    
    // 2. 索引访问元组元素
    println!("学生姓名: {}", student.0);
    println!("学生年龄: {}", student.1);
    println!("学生分数: {}", student.2);
    
    // 3. 解构元组
    let (name, age, score) = student;
    println!("解构结果: {} 今年 {} 岁,分数为 {}", name, age, score);
    
    // 4. 创建数组:包含 5 个整数
    let numbers = [10, 20, 30, 40, 50];
    
    // 5. 索引访问数组元素
    println!("数组第一个元素: {}", numbers[0]);
    println!("数组第三个元素: {}", numbers[2]);
    
    // 6. 遍历数组并计算总和
    let mut sum = 0;
    for num in numbers.iter() {
        sum += num;
        println!("当前元素: {}", num);
    }
    println!("数组元素总和: {}", sum);
    
    // 7. 复合操作:元组数组 + 解构遍历
    let students = [
        ("张三", 19, 91.0),
        ("李四", 21, 85.5),
        ("王五", 20, 78.0),
    ];
    
    println!("\n遍历元组数组(解构):");
    let mut total_score = 0.0;
    for (s_name, s_age, s_score) in students.iter() {
        println!("{} 年龄 {} 分数 {}", s_name, s_age, s_score);
        total_score += s_score;
    }
    println!("平均分: {:.2}", total_score / students.len() as f64);
}

关键操作说明

代码第 1–3 行创建了一个包含三种不同类型数据的元组,并通过 . 加索引(从 0 开始)访问元素。第 7–9 行演示了元组的解构赋值,一次性将三个元素分别绑定到 name、age、score 变量。第 11–12 行创建了固定长度数组,第 14–15 行通过下标索引访问元素。第 17–21 行使用 iter() 方法遍历数组并累加求和。第 24–33 行将元组放入数组形成复合结构,在 for 循环中直接解构每个元组元素,同时计算平均分。

编译与运行

// 保存为 main.rs,然后执行:
// rustc main.rs
// ./main(Windows 下为 main.exe)

预期输出

学生姓名: Alice
学生年龄: 20
学生分数: 87.5
解构结果: Alice 今年 20 岁,分数为 87.5
数组第一个元素: 10
数组第三个元素: 30
当前元素: 10
当前元素: 20
当前元素: 30
当前元素: 40
当前元素: 50
数组元素总和: 150

遍历元组数组(解构):
张三 年龄 19 分数 91
李四 年龄 21 分数 85.5
王五 年龄 20 分数 78
平均分: 84.83

验证方法

编译并运行程序后,观察控制台输出:若依次显示元组索引访问结果、解构绑定结果、数组索引访问结果、遍历输出及总和 150,最后正确打印三位学生的信息与平均分 84.83,则说明元组与数组的创建、索引、解构和遍历操作均已正确实现。

元组与数组操作关系图 元组 (Tuple) let student = ("Alice", 20, 87.5) 索引: student.0 / .1 / .2 解构: let (name, age, score) 数组 (Array) let numbers = [10, 20, 30, 40, 50] 索引: numbers[0] / numbers[2] 遍历: for num in numbers.iter() 复合操作:元组数组 let students = [("张三", 19, 91.0), ("李四", 21, 85.5), ("王五", 20, 78.0)] 遍历 + 解构: for (name, age, score) in students.iter() 同时计算平均分: total_score / students.len() 组合 组合 索引/解构 索引/遍历 解构 + 遍历