문자열을 숫자로 파싱하기
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(), 또는 에러를 전파하기 위한 ? 연산자를 사용할 수 있습니다.
챌린지
쉬움문자열 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 {
// 여기에 코드를 작성하세요
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Logic & Flow의 모든 레슨
7'Result'를 이용한 에러 처리
'Result'란 무엇인가요?'Result'와 함께 'match' 사용하기is_ok()와 is_err()단축 방법: unwrap과 expect물음표 연산자 '?'문자열을 숫자로 파싱하기요약 - 안전한 나눗셈 함수