범위 매칭하기
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 3번째.
값이 특정 숫자 범위 내에 있는지 확인해야 할 때, 각 개별 값에 대해 별도의 암(arm)을 작성하는 것은 번거로운 일일 것입니다. Rust의 match 표현식은 start..=end 구문을 사용하여 연속된 값의 범위와 매칭할 수 있는 범위 패턴을 지원합니다.
..= 연산자는 포함 범위(inclusive range)를 생성하며, 이는 시작 값과 끝 값이 모두 매치에 포함됨을 의미합니다. match 암(arm)에서 범위를 사용하는 방법은 다음과 같습니다:
let temp = 20;
match temp {
30..=50 => println!("Hot"),
10..=29 => println!("Warm"),
_ => println!("Cold"),
}이 예제에서 온도 20은 10..=29 범위에 해당하며 "Warm"을 출력합니다. 30..=50 범위는 30과 50을 모두 포함하므로, 정확히 30 또는 50인 온도는 모두 "Hot"이라는 결과를 출력하게 됩니다.
챌린지
쉬움입력으로 나이를 받게 됩니다. 입력을 읽고 정수로 변환한 다음, 범위 패턴이 있는 match 표현식을 사용하여 적절한 연령대를 출력하세요.
요구 사항:
- 나이가
0..=12인 경우,"Child"를 출력합니다. - 나이가
13..=19인 경우,"Teenager"를 출력합니다. - 나이가
20..=64인 경우,"Adult"를 출력합니다. - 나이가
65..=120인 경우,"Senior"를 출력합니다. - 그 외의 나이에 대해서는
"Invalid age"를 출력합니다.
입력: 나이를 나타내는 단일 정수
출력: 연령대 카테고리를 출력합니다: "Child", "Teenager", "Adult", "Senior", 또는 "Invalid age"
치트 시트
match 표현식의 범위 패턴을 사용하면 start..=end 구문을 사용하여 연속된 값의 범위에 대해 매칭할 수 있습니다. 여기서 ..=는 포함적 범위(시작값과 끝값이 모두 포함됨)를 생성합니다.
let score = 85;
match score {
90..=100 => println!("Grade: A"),
80..=89 => println!("Grade: B"),
70..=79 => println!("Grade: C"),
60..=69 => println!("Grade: D"),
_ => println!("Grade: F"),
}이 예제에서 85라는 점수는 80..=89 범위에 매치되어 "Grade: B"를 출력합니다. 90..=100 범위는 90과 100을 모두 포함합니다.
직접 해보기
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 표현식을 사용하여 코드를 작성하세요
// 결과 출력
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.