Menu
Coddy logo textTech

'Option'과 함께 'match' 사용하기

Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 36번째.

이제 Option이 무엇인지 이해했으므로, 이를 처리하는 가장 일반적이고 명시적인 방법인 match 표현식을 사용하는 법을 배워보겠습니다. 이 방식은 값이 있는 경우와 없는 경우라는 두 가지 가능한 상황을 모두 고려하도록 강제합니다.

match 표현식은 두 가지 변형(variant) 모두에 대해 암(arm)을 생성할 수 있기 때문에 Option과 완벽하게 작동합니다:

let maybe_name = Some("Alice".to_string());

match maybe_name {
    Some(name) => println!("Hello, {}!", name),
    None => println!("Hello, stranger!"),
}

Some(name) 팔(arm)이 Some 변체(variant) 내부에서 값을 어떻게 추출하는지 확인해 보세요. 이제 name 변수는 Option이 아니라 실제 String을 포함합니다. 이것을 구조 분해(destructuring)라고 하며, 래퍼(wrapper)에서 내부 값을 꺼내는 것을 의미합니다.

None 분기는 값이 없는 경우를 처리하며, 기본 메시지를 표시하거나 완전히 다른 작업을 수행하는 것과 같은 대체 동작을 제공할 수 있게 해줍니다.

challenge icon

챌린지

쉬움

학생 이름을 입력으로 받게 됩니다. 이름은 시스템에 존재할 수도 있고 누락되었을 수도 있습니다. 이름이 비어 있지 않으면 Some(name)을 포함하고, 이름이 비어 있으면 None을 포함하는 Option<String>을 생성하세요. match 표현식을 사용하여 두 경우를 모두 처리하고 적절한 메시지를 출력하세요.

요구 사항:

  • 입력을 문자열(학생 이름)로 읽습니다.
  • .trim()을 사용하여 입력에서 모든 공백을 제거합니다.
  • Option<String> 변수를 생성합니다:
    • 공백이 제거된 이름이 비어 있지 않으면, Some(name.to_string())을 할당합니다.
    • 공백이 제거된 이름이 비어 있으면, None을 할당합니다.
  • Option의 두 가지 변형을 모두 처리하기 위해 match 표현식을 사용합니다.
  • Some(name) 암(arm)에서는 다음을 출력합니다: Welcome, [name]!
  • None 암(arm)에서는 다음을 출력합니다: No name provided

입력:

  • 학생 이름이 포함된 한 줄 또는 빈 줄

출력:

  • 이름이 제공된 경우: Welcome, [name]!
  • 이름이 제공되지 않은 경우(빈 입력): No name provided

치트 시트

match 표현식을 사용하여 두 변리언트(variant) 모두에 대한 암(arm)을 생성함으로써 Option 값을 처리합니다:

let maybe_name = Some("Alice".to_string());

match maybe_name {
    Some(name) => println!("Hello, {}!", name),
    None => println!("Hello, stranger!"),
}

Some(name) 암은 **구조 분해(destructuring)**를 사용하여 Some 변리언트에서 내부 값을 추출합니다. name 변수는 Option 래퍼가 아닌 실제 값을 포함합니다.

None 암은 값이 없는 경우를 처리하여 대체 동작을 제공할 수 있게 합니다.

직접 해보기

use std::io;

fn main() {
    // 입력 읽기
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let name = input.trim();
    
    // TODO: 이름이 비어 있는지 여부에 따라 Option<String> 생성
    
    // TODO: match 표현식을 사용하여 Some 및 None 케이스를 처리하고 적절한 메시지 출력
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨