Menu
Coddy logo textTech

문자열을 숫자로 파싱하기

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

실제 환경에서 Result의 가장 일반적인 응용 사례 중 하나는 문자열을 숫자로 변환하는 것입니다. Rust에서는 .parse() 메서드를 사용하여 이를 수행하는데, 이는 파싱이 실패할 수 있기 때문에 Result가 왜 존재하는지를 완벽하게 보여줍니다.

.parse() 메서드는 문자열을 숫자로 변환하려고 시도하지만, 모든 문자열이 유효한 숫자를 나타내는 것은 아닙니다. 예를 들어, "42"는 숫자 42로 파싱될 수 있지만, "hello"는 어떤 숫자로도 변환될 수 없습니다:

let valid_number = "42";
let invalid_number = "hello";

let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();

파싱에 성공하면, .parse()는 변환된 값을 포함하는 Ok(number)를 반환합니다. 실패할 경우, 파싱이 실패한 이유에 대한 정보가 담긴 Err(error)를 반환합니다. 이는 두 가지 가능성을 모두 명시적으로 처리하도록 강제하여, 유효하지 않은 입력으로 인해 프로그램이 중단되는 것을 방지합니다.

여러분은 이미 배운 Result 처리 기법 중 하나를 사용하여 파싱 결과를 처리할 수 있습니다. 명시적인 처리를 위한 match, 성공할 것이라고 확신하는 경우의 unwrap(), 또는 에러를 전파하기 위한 ? 연산자를 사용할 수 있습니다.

challenge icon

챌린지

쉬움

문자열 input을 받아 정수로 파싱된 값을 반환하는 함수 parse_to_integer를 작성하세요. 문자열을 유효한 정수로 파싱할 수 없는 경우, 기본값으로 0을 반환하세요.

.parse() 메서드를 사용하여 문자열을 i32로 변환하고, Result를 적절하게 처리하여 안전한 반환 값을 제공하세요.

매개변수:

  • input (String): 정수로 파싱할 문자열

반환 값: 성공 시 파싱된 정수, 또는 파싱 실패 시 0 (i32)

치트 시트

.parse() 메서드는 문자열을 숫자로 변환하고, 파싱이 실패할 수 있기 때문에 Result 타입을 반환합니다:

let valid_number = "42";
let invalid_number = "hello";

let result1: Result<i32, _> = valid_number.parse();
let result2: Result<i32, _> = invalid_number.parse();

파싱에 성공하면 .parse()Ok(number)를 반환합니다. 실패하면 Err(error)를 반환합니다.

match, unwrap(), ? 연산자 또는 실패 시 기본값을 제공하는 unwrap_or()를 사용하여 파싱 결과를 처리할 수 있습니다.

직접 해보기

fn parse_to_integer(input: String) -> i32 {
    // 여기에 코드를 작성하세요
}
quiz icon실력 점검

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

Logic & Flow의 모든 레슨