Menu
CoddyTech

元组结构体

本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 25 课,共 66 课。

普通结构体使用具名字段,而 Rust 还提供了另一种类型,叫作元组结构体。如果你不需要为每个字段单独命名,元组结构体可以让你更简洁地创建自定义类型。

元组结构体结合了创建新类型的优点和元组的简洁性。你可以使用 struct 关键字定义它,后面依次写上类型名称和括号中的字段类型:

struct Color(i32, i32, i32);

这会创建一个 Color 类型,其中包含三个 i32 值,用来表示 RGB 颜色值。与常规结构体不同,你不需要指定字段名,而是像使用元组一样,按位置访问这些值。

要创建元组结构体的实例,你需要在括号中提供值:

let red = Color(255, 0, 0);

你可以使用带字段索引的点表示法访问各个字段:red.0 表示第一个值,red.1 表示第二个值,依此类推。

challenge icon

挑战

简单

你将收到 3 个输入:红色值(整数)、绿色值(整数)和蓝色值(整数)。定义一个 Color 元组结构体,其中包含 3 个 i32 值,分别表示 RGB 颜色分量。使用输入值创建这个元组结构体的实例,然后使用索引表示法访问并打印每个颜色分量。

要求:

  • 定义一个包含 3 个 i32 字段的 Color 元组结构体
  • 读取第一个输入,并将其转换为 i32,作为红色值
  • 读取第二个输入,并将其转换为 i32,作为绿色值
  • 读取第三个输入,并将其转换为 i32,作为蓝色值
  • 使用这些值创建 Color 元组结构体的实例
  • 使用带索引(0、1、2)的点表示法访问每个字段,并严格按照下方所示格式打印颜色信息

输入:

  • 第一行:红色值,整数(例如 255)
  • 第二行:绿色值,整数(例如 128)
  • 第三行:蓝色值,整数(例如 0)

输出:

  • 第一行:Red: [red_value]
  • 第二行:Green: [green_value]
  • 第三行:Blue: [blue_value]

亲手试试

use std::io;

// TODO:在这里定义你的 Color 元组结构体

fn main() {
    // 读取红色值
    let mut red_input = String::new();
    io::stdin().read_line(&mut red_input).expect("Failed to read line");
    let red: i32 = red_input.trim().parse().expect("Invalid input");
    
    // 读取绿色值
    let mut green_input = String::new();
    io::stdin().read_line(&mut green_input).expect("Failed to read line");
    let green: i32 = green_input.trim().parse().expect("Invalid input");
    
    // 读取蓝色值
    let mut blue_input = String::new();
    io::stdin().read_line(&mut blue_input).expect("Failed to read line");
    let blue: i32 = blue_input.trim().parse().expect("Invalid input");
    
    // TODO:使用输入值创建一个 Color 元组结构体实例
    
    // TODO:使用索引访问并打印每个颜色分量
    // 格式:Red: [value], Green: [value], Blue: [value]
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Rust 在线编译器