null 타입 트리 변경
int i = null; //error
int? i = null; //OK
- 기존에는 모든 타입 시스템이 Null을 허용했었다.
- 모든 타입은 NULL을 허용하지 않도록 바뀌었다.
nullable
- null일수도 있고, 아닐수도 있는 타입
- 모든 타입이 Nullable이라는 타입을 상위 객체로 가지고 있다.
- 현재는 Never라는 특수 타입이 추가 되었다.
?.
int? nullableValue = 10;
print(nullableValue?.toString()); //10 출력
int? nullableValue = null;
print(nullableValue?.toString()); //null 출력
- nullable 객체를 안전하게 사용하고자 할때 사용한다.
- null이 아니면 해당 코드를 수행하고
- null이면 null을 반환하도록 한다.
Null Safety의 장점
- 널을 허용하지 않는 변수는 널이 아님을 100% 보장한다.
- 항상 예측 가능한 코딩을 할 수 있다.
- 컴파일러가 변수의 널 검사를 진행하지 않아도 되기 때문에 컴파일 속도가 대폭 향상된다.