简介
在这个实验中,我们有一段代码展示了 Rust 中枚举(enum)的用法,包括如何使用 match 语句解构枚举,以及如何根据枚举变体访问关联值。
注意:如果实验未指定文件名,你可以使用任何你想要的文件名。例如,你可以使用
main.rs,通过rustc main.rs &&./main来编译并运行它。
枚举
枚举(enum)的解构方式类似:
// 需要使用 `allow` 来消除警告,因为这里只使用了一个变体。
#[allow(dead_code)]
enum Color {
// 这三个变体仅通过名称指定。
Red,
Blue,
Green,
// 这些变体同样将 `u32` 元组与不同的名称关联:颜色模型。
RGB(u32, u32, u32),
HSV(u32, u32, u32),
HSL(u32, u32, u32),
CMY(u32, u32, u32),
CMYK(u32, u32, u32, u32),
}
fn main() {
let color = Color::RGB(122, 17, 40);
// TODO ^ 尝试为 `color` 使用不同的变体
println!("这是什么颜色?");
// 可以使用 `match` 来解构枚举。
match color {
Color::Red => println!("颜色是红色!"),
Color::Blue => println!("颜色是蓝色!"),
Color::Green => println!("颜色是绿色!"),
Color::RGB(r, g, b) =>
println!("红色:{}, 绿色:{}, 蓝色:{}!", r, g, b),
Color::HSV(h, s, v) =>
println!("色相:{}, 饱和度:{}, 值:{}!", h, s, v),
Color::HSL(h, s, l) =>
println!("色相:{}, 饱和度:{}, 亮度:{}!", h, s, l),
Color::CMY(c, m, y) =>
println!("青色:{}, 品红色:{}, 黄色:{}!", c, m, y),
Color::CMYK(c, m, y, k) =>
println!("青色:{}, 品红色:{}, 黄色:{}, 关键色(黑色):{}!",
c, m, y, k),
// 不需要另一个分支,因为所有变体都已检查
}
}
总结
恭喜你!你已经完成了枚举实验。你可以在 LabEx 中练习更多实验来提升你的技能。