문자열을 숫자로 파싱하기
Coddy Rust 여정의 논리와 흐름 섹션에 포함된 레슨. 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()을, 오류를 전파하려면 ? 연산자를 사용하세요.
챌린지
쉬움변환된 정수 값을 반환하는 함수 parse_to_integer를 작성하세요. 문자열 input을 입력받습니다. 문자열을 유효한 정수로 변환할 수 없으면 기본값으로 0을 반환하세요.
.parse() 메서드를 사용해 문자열을 i32로 변환하고, 안전한 반환값을 제공하도록 Result를 적절히 처리하세요.
매개변수:
input(String): 정수로 변환할 문자열
반환값: 변환에 성공하면 변환된 정수를 반환하고, 변환에 실패하면 0을 반환합니다(i32).
직접 해보기
fn parse_to_integer(input: String) -> i32 {
// 여기에 코드를 작성하세요
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
7'Result'를 이용한 에러 처리
'Result'란 무엇인가요?'Result'와 함께 'match' 사용하기is_ok()와 is_err()단축 방법: unwrap과 expect물음표 연산자 '?'문자열을 숫자로 파싱하기요약 - 안전한 나눗셈 함수직접 연습해 보세요: 온라인 Rust 컴파일러