null-safe 언어란
- 객체를 선언하면 기본적으로
null
을 넣을 수 없다. - 문법적으로 지정을 해줘야지만
null
값을 가질 수 있게 된다. - 이를테면,
int number;
는null
이 가능하다는?
키워드 표기 없이 초기화를 하지 않았기 때문에 유효하지 않다. int? number;
는 유효하다.
이러한 null-safe 언어의 특성 때문에 null-safe 가 아닌 언어를 쓰던 사람들에게는 낯선
?
나!
같은 연산자가 매우 자주 쓰인다.
자주 쓰이는 연산자
?
연산자
?
연산자는 위에서도 언급했는데 어떤 변수에null
이 들어갈 수도 있음을 의미한다.
int? number; // null 가능
int number; // null 불가능
!
연산자
!
연산자는 변수가null
이 아닌 것으로 취급하도록 Dart 에 지시하는 것이다.- 변수가
null
이 아니라고 확신하지만 Dart 의 분석에서 이를 감지할 수 없을 때 유용하다. - 그러나 남발하여 런타임에
null
이 된다면, 오류가 발생한다.
String? nullableName;
nullableName = "Alice";
nullableName!.upperCase();
?.
연산자
?.
는 자바나 자바스크립트같은 언어에서 경험할 수 있는 메서드나 속성에서 발생할 수 있는 NPE 에러를 방지하고 그냥null
을 반환하도록 한다.
String? nullableName;
nullableName = "Alice";
nullableName?.upperCase();
반응형
'Dart' 카테고리의 다른 글
Dart 에서 CopyWith 메서드를 쓰는 이유 (0) | 2023.12.16 |
---|---|
Dart 에서 import hide 이용하기 (0) | 2023.12.15 |
다트의 비동기 지원 (Asynchronous Support) (0) | 2023.10.22 |
다트 비동기 프로그래밍 (Future, Async, Await) (0) | 2023.10.22 |
다트 (Dart) 언어의 생성자 (Constructors) 정리 (0) | 2023.10.13 |