다트는 효율적인 코딩 및 예외 처리를 위해 널 인지 연산자를 제공합니다. 이 연산자들은 코드를 간결하게 만들고 널 값으로 인한 예외를 방지하는 데 도움이 됩니다.
다트는 ?., ??, ??= 세 가지 널 인지 연산자를 제공합니다.
?. 연산자 (Null-aware Access)
?. 연산자는 객체가 널인지 여부를 확인하고 널이 아닌 경우에만 속성에 접근합니다. 이를 통해 객체가 널이면 예외를 발생시키지 않고 코드 실행을 계속할 수 있습니다.
코드 예시
void main() {
const x = null;
const text = 'hello world!';
print(x?.length); // null
print(text?.length); // 12
}
dartpad 실행 예시
?? 연산자 (Null Coalescing)
?? 연산자는 왼쪽 피연산자가 널인 경우에만 오른쪽 피연산자를 반환합니다. 이를 사용하여 기본값을 설정하거나 널 값 대체를 처리할 수 있습니다.
코드 예시
void main() {
const x = null;
const y = 1;
const z = 2;
print(x ?? y); // 1
print(y ?? x); // 1
print(y ?? z); // 1
}
dartpad 실행 예시
??= 연산자 (Assignment if Null)
??= 연산자는 왼쪽 피연산자가 널인 경우에만 오른쪽 피연산자의 값을 할당합니다. 즉, 변수가 널인 경우에만 값을 할당하고, 이미 값이 있는 경우에는 그 값을 유지합니다.
코드 예시
void main() {
var x = null;
print(x); // null
x ??= 5;
print(x); // 5
}
dartpad 실행 예시
참고 자료
- Dart docs - https://dart.dev/null-safety/understanding-null-safety
- 위키독스: https://wikidocs.net/168825