Null Safety는 개발자가 null 값을 참조할 수 없게 하는 것입니다.
다음 코드를 봅시다.
1 | bool isEmpty(String string) => string.length == 0; |
다음과 같은 코드는 어떻게 실행될까요?
정답은 NoSuchMethodError
를 실행합니다. 왜 이렇게 실행될까요?
바로 String을 보내야 할 곳에 null을 보냈기 때문입니다.
null 에는 length 라는 속성이 없기 때문이기도 합니다.
이와 같은 에러는 컴파일러에서 잡을 수 있는 에러가 아닙니다.
이런 상황이 발생하지 않도록 null 를 삭제하기에는 null 값은 유용합니다.
그럼 어떻게 null 값을 참조하는 것을 dart 는 어떻게 보호할까요?
dart에서는 변수가 null이 될 수 있음을 명확히 표시해야 합니다.
다음 코드를 봅시다.
1 | void main() { |
이 코드는 에러가 납니다. name 이 null 값을 참조할 수 있다고 알려주지 않고 null 값을 참조하기 때문입니다.
그러면 다음 코드를 봅시다.
1 | void main() { |
이 코드는 에러가 나지 않습니다. 차이점이 뭘까요? 바로 변수 뒤에 ?
를 사용해 이 변수에는 null 이 참조될 수 있음을 알려주는 것입니다.
만약 ?
를 붙인 변수는 이 변수가 null 인지 아닌지 확인해야 합니다.
1 | void main() { |