범위 매칭하기
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 3번째.
값이 특정 숫자 범위 내에 있는지 확인해야 할 때, 각 개별 값에 대해 별도의 암(arm)을 작성하는 것은 지루한 작업일 수 있습니다. Rust의 match 표현식은 start..=end 구문을 사용하여 연속된 값의 범위와 매칭할 수 있는 범위 패턴을 지원합니다.
..= 연산자는 포함 범위(inclusive range)를 생성하며, 이는 시작 값과 끝 값이 모두 매치에 포함됨을 의미합니다. match 암(arm)에서 범위를 사용하는 방법은 다음과 같습니다:
let temp = 22;
match temp {
..=0 => println!("Freezing"),
1..=15 => println!("Cold"),
_ => println!("Warm"),
}이 예제에서 온도가 22인 경우 처음 두 범위와 일치하지 않으므로, 와일드카드 암(wildcard arm)으로 넘어가 "Warm"을 출력합니다. 1..=15 범위는 1과 15를 모두 포함하므로, 1부터 15 사이의 모든 온도는 "Cold"를 출력합니다.
챌린지
쉬움나이를 입력으로 받게 됩니다. 입력을 읽고 정수로 변환한 다음, 범위 패턴이 있는 match 표현식을 사용하여 적절한 연령 카테고리를 출력하세요.
요구 사항:
- 나이가
0..=12인 경우,"Child"를 출력합니다. - 나이가
13..=19인 경우,"Teenager"를 출력합니다. - 나이가
20..=64인 경우,"Adult"를 출력합니다. - 나이가
65..=120인 경우,"Senior"를 출력합니다. - 그 외의 모든 나이에 대해서는
"Invalid age"를 출력합니다.
입력: 나이를 나타내는 단일 정수
출력: 연령 카테고리인 "Child", "Teenager", "Adult", "Senior", 또는 "Invalid age"를 출력합니다.
직접 해보기
use std::io;
fn main() {
// 입력 읽기
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let age: i32 = input.trim().parse().expect("Please enter a valid number");
// TODO: 범위 패턴을 사용한 `match` 표현식을 사용하여 아래에 코드를 작성하세요
// 결과 출력
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.