Option
값이 없을 수 있으면 타입이 먼저 그 가능성을 드러낸다
Option은 Some과 None을 강제로 구분하게 해서, 없는 값을 있다고 가정하는 실수를 컴파일 단계에서 줄인다.
Some
실제 T 값이 안에 들어 있는 경우다.
None
값이 없으므로 T로 바로 사용할 수 없다.
match
두 경우를 모두 처리하는 제어 흐름이다.
값 필요
Option인지 확인
타입에 Option이 보이면 없는 경우까지 고려해야 한다.
match
Some과 None 분기
값이 있을 때와 없을 때의 동작을 분리한다.
Some T
내부 값 꺼내기
패턴이 내부 값을 바인딩하고 계산에 사용할 수 있게 한다.
None
대체 흐름 실행
기본값, 오류 메시지, 조기 반환 같은 처리를 둔다.
상황
좋은 처리
피해야 할 생각
값이 항상 있음
일반 T 타입을 사용한다.
없는 값을 표현하려고 임의의 sentinel을 넣는다.
값이 없을 수 있음
Option T로 타입에 가능성을 표시한다.
호출자가 알아서 조심할 것이라고 가정한다.
값을 써야 함
match나 Option 메서드로 명시적으로 꺼낸다.
Some이라고 믿고 바로 T처럼 연산한다.
널 대신 타입
없을 수 있음을 값이 아니라 타입으로 표현한다.
모든 분기 처리
Some만 생각하면 None에서 무엇을 할지 빠진다.
문서도 확인
Option 메서드는 상황별로 값을 꺼내거나 변환하는 여러 선택지를 준다.