Option - Some() 값 가져오기

Kurt·2023년 9월 16일
0

[Rust Language]

목록 보기
22/24

개요

option을 사용하고 Some 내부에 들어간 값만 출력할 때의 방법

사실 누군가에게는 이 내용이 정말 쉬운 내용일 수 있다.
하지만 rust를 처음 시작하는 나에게 쉽지 않았던 내용이기 때문에 내가 공부하기 위해서 정리 ~


내용

fn take_five(value: Vec<i32>) -> Option<i32> {
	if value.len() < 5 {
    	None
    } else {
        Some(value[4])
    }
}
```fn take_five(value: Vec<i32>) -> Option<i32> {``` 부분을 잠시 모르는 분들을 위해서 설명.
들어오는 아규먼트(value)가 벡터(Vec) 데이터 구조이며, i32(<i32\>) 타입으로 되어있다.

위와 같은 함수로 출력되는 Some 값을 추출하기 위해 아래 두가지 방법이 존재한다.

방법 1. match 사용하여 추출
방법 2. if문으로 Some일 경우 unwrap

match 사용

fn main() {
	let new_vec = vec![1, 2, 3, 4, 5, 6, 7];
    let index = take_five(new_vec);
    
    match index {
    	Some(number) => println!("{}", number),
        None => println!("Nothing"),
    }
}

위 코드에서 new_vec 이라는 벡터의 5번째 값을 출력하게 될 것이며,
match에서
Some(number) => println!("{}", number), 부분은 Some(number) 안에 존재하는 number 값을 출력하게 될 것이며, 만약 None일 경우 Nothing이 출력될 것이다.

if 사용

if문에서 is_some Method를 이용하여 작업

fn main() {
	let new_vec = vec![1, 2, 3, 4, 5, 6, 7];
    let index = take_five(new_vec);
    
    if index.is_some() {
    	println!("{}", index.unwrap()); // unwarp보다 expect를 사용하는 것을 더 추천한다.
}

is_some Method는 Option 값이 Some인 경우 true를 반환한다.


내용 출처:
> mithradates - 프로그래밍 언어 러스트를 배웁시다!


profile
내 인생이라는 프로젝트의 최고 버전을 만들기 위해

0개의 댓글