티스토리 뷰
반응형
다트는 엄격한 널 안전성(sound null safety)을 강제한다. 널 안전성은 널(null)로 설정된 변수를 의도치 않게 접근하는 것에 비롯되는 오류를 방지한다.
예를 들어, 메서드가 정수를 기대하지만 널을 받는 경우, 앱이 런타임 오류를 일으킬 수 있다. 이러한 타입의 오류는 널 역참조 오류(null dereference error)라고 하며, 디버깅하기 어렵다.
엄격한 널 안전성에서는 모든 변수에 값이 필요하다. 이는 다트가 모든 변수를 널이 될 수 없다고 간주한다는 의미이다. 선언된 타입의 값만 할당할 수 있다. 기본 타입 변수에는 절대 널 값을 할당할 수 없다. 변수 타입이 널 값을 가질 수 있음을 명시하려면 타임 주석 뒤에 ?를 추가하자. (예: int? i) 이러한 널-가능 타입은 널 또는 정의된 타입의 값을 가질 수 있다.
엄격한 널 안전성은 잠재적인 런타임 오류를 편집 시간 분석 오류로 변경한다. 널 안전성을 사용하면 다트 분석기와 컴파일러는 널-불가능 변수에 대해 다음과 같은 경우에 알려준다.
- 널이 아닌 값으로 초기화되지 않는 경우
- 널 값을 할당하는 경우
이러한 체크를 통해 앱을 배포하기 전에 오류를 수정할 수 있다.
예제를 통한 소개
널 안전성을 사용하면 다음 코드의 변수는 모두 널이 될 수 없다.
// 널 안정성을 사용하면, 이 변수들은 절대 null이 될 수 없습니다.
var i = 42; // int로 추론됩니다.
String name = getFileName();
final b = Foo();
변수가 널 값을 가질 수 있음을 표시하려면 타입 선언 시 ?를 추가하기만 하면 된다.
int? aNullableInt = null;
int? otherNullableInt; // 널-가능은 선언시 초기화를 하지 않으면 자동으로 null이 된다.
반응형
'다트 공식 문서 번역' 카테고리의 다른 글
다트] 널 안전성 이해하기 (0) | 2024.08.14 |
---|---|
다트] 비동기 지원 (0) | 2024.08.12 |
다트] 다트에서의 동시성 (0) | 2024.08.12 |
다트] 클래스 수정자 조합 (0) | 2024.08.12 |
다트] API 유지 보수를 위한 클래스 수정자 (0) | 2024.08.11 |
댓글
공지사항