7.5.1.2 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!("What color is it?");
    // `enum`은 `match`를 사용해 역구조화 할 수 있다.
    match color {
        Color::Red   => println!("The color is Red!"),
        Color::Blue  => println!("The color is Blue!"),
        Color::Green => println!("The color is Green!"),
        Color::RGB(r, g, b) =>
            println!("Red: {}, green: {}, and blue: {}!", r, g, b),
        Color::HSV(h, s, v) =>
            println!("Hue: {}, saturation: {}, value: {}!", h, s, v),
        Color::HSL(h, s, l) =>
            println!("Hue: {}, saturation: {}, lightness: {}!", h, s, l),
        Color::CMY(c, m, y) =>
            println!("Cyan: {}, magenta: {}, yellow: {}!", c, m, y),
        Color::CMYK(c, m, y, k) =>
            println!("Cyan: {}, magenta: {}, yellow: {}, key (black): {}!",
                c, m, y, k),
        // 모든 변수가 검토되었기 때문에 이 외에 범위가 필요하지 않다.
    }
}

See also:

#[allow(...)], color models and enum

results matching ""

    No results matching ""