소개
이 실습에서는 Rust 에서 열거형 (enum) 의 사용법을 보여주는 코드를 제공합니다. match 문을 사용하여 열거형을 분해하고, 열거형 변형에 따라 연관된 값에 접근하는 방법을 포함합니다.
참고: 실습에서 파일 이름을 지정하지 않으면 원하는 파일 이름을 사용할 수 있습니다. 예를 들어
main.rs를 사용하고rustc main.rs && ./main명령어로 컴파일 및 실행할 수 있습니다.
열거형 (enums)
enum도 비슷하게 분해됩니다.
// 경고를 무시하기 위해 `allow` 가 필요합니다.
// 단 하나의 변형만 사용되기 때문입니다.
#[allow(dead_code)]
enum Color {
// 이 3 가지는 이름만으로 지정됩니다.
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!("어떤 색상인가요?");
// `enum` 은 `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),
// 모든 변형을 검사했으므로 다른 분기는 필요하지 않습니다.
}
}
요약
축하합니다! 열거형 (Enums) 실습을 완료했습니다. LabEx 에서 더 많은 실습을 통해 기술을 향상시킬 수 있습니다.