元组结构体
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 25 课,共 66 课。
普通结构体使用具名字段,而 Rust 还提供了另一种类型,叫作元组结构体。如果你不需要为每个字段单独命名,元组结构体可以让你更简洁地创建自定义类型。
元组结构体结合了创建新类型的优点和元组的简洁性。你可以使用 struct 关键字定义它,后面依次写上类型名称和括号中的字段类型:
struct Color(i32, i32, i32);这会创建一个 Color 类型,其中包含三个 i32 值,用来表示 RGB 颜色值。与常规结构体不同,你不需要指定字段名,而是像使用元组一样,按位置访问这些值。
要创建元组结构体的实例,你需要在括号中提供值:
let red = Color(255, 0, 0);你可以使用带字段索引的点表示法访问各个字段:red.0 表示第一个值,red.1 表示第二个值,依此类推。
挑战
简单你将收到 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]
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器