Rust 기본, 패턴 매칭 표현식 (Match expression)
Rust match 표현식은 값의 패턴을 매칭하여 조건에 따라 코드를 실행하는 강력한 제어 흐름 구조입니다.
이는 다른 프로그래밍 언어의 switch-case 구문과 비슷하지만,
더 유연하고 강력한 기능을 제공합니다.
값을 일련의 패턴과 비교하여 어떤 코드 경로를 실행할지 결정할 수 있습니다.
또한 값에 대한 모든 패턴을 제시해야합니다.
부족할 경우 마지막에 모든 경우에 해당하는 '_' 패턴을 사용합니다.
fn main() {
let age = 5;
// 매치 블록 내부에는 패턴과 일치할 경우 실행할 코드로 구성된 match arms가 나열된다.
// 패턴은 리터럴 값, 변수 이름, 와일드 카드 등이 될 수 있습니다.
match age {
1 => println!("Happy 1st Birthday!"), // literal value
13..=19 => println!("You are a teenager!"), // 13~19, range of numbers
x => println!("You are {x} years old!"), // 변수로 나머지 모든 경우를 대체.
//_ => println!("others") // 나머지 모든 경우
}
let marks = 55u8;
match marks {
91..=100 => println!("excellent!"),
71..=90 => println!("good.)"),
51..=70 => println!("average..."),
0..=50 => println!("You failed."),
101..=u8::MAX => println!("Invalid marks!!!"),
}
}
열거형 이름이 길면 Operation::Add 대신 Self::Add 사용할 수 있습니다.
#[derive(Debug)]
enum Operation {
Add(u8, u8),
Mul(u8, u8),
Subtract { first: u8, second: u8 },
Divide { divident: u8, divisor: u8 },
}
impl Operation {
fn result(&self) -> u8 {
match self {
Self::Add(a, b) => a + b, // Operation 대신 Self 사용 가능.
Self::Mul(a, b) => a * b,
Self::Subtract { first, second } => first - second,
Self::Divide { divident, divisor } => divident / divisor,
}
}
}
fn main() {
let user_operation = Operation::Subtract {
first: 75,
second: 20,
};
println!("{:?} Result: {}", user_operation, user_operation.result());
}
'개발 > 러스트 (Rust)' 카테고리의 다른 글
Rust 기본 : 일반화 (Generics) (0) | 2024.09.03 |
---|---|
Rust 기본 : 벡터 (Vector) (0) | 2024.08.26 |
Rust 기본 : 결과 열거형 (Result enum) (0) | 2024.08.21 |
Rust 기본, 옵션 열거형 (Option enum) (0) | 2024.08.17 |
Rust 기본, 열거형 (Enumerations) (0) | 2024.08.10 |
Rust 기본, 구조체 (Struct) Tuple structs (0) | 2024.08.06 |
Rust 기본, 구조체 (Struct) Implementation blocks (0) | 2024.08.01 |
Rust 기본, 구조체 (Struct) (0) | 2024.07.24 |