본문 바로가기
Dart & Flutter

[Dart] Dart에서 사용하는 널 인지 연산자 (Null-aware Operator)

by Devinus 2024. 2. 3.

Dart

 

다트는 효율적인 코딩 및 예외 처리를 위해 널 인지 연산자를 제공합니다. 이 연산자들은 코드를 간결하게 만들고 널 값으로 인한 예외를 방지하는 데 도움이 됩니다. 

 

다트는 ?., ??, ??= 세 가지 널 인지 연산자를 제공합니다.

 

?. 연산자 (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

 

Understanding null safety

A deep dive into Dart language and library changes related to null safety.

dart.dev

- 위키독스: https://wikidocs.net/168825

 

04. 널 인지(Null-aware) 연산자

# 널 인지(Null-aware) 연산자 위젯의 널 여부 확인 사용한다. ## `??` 좌, 우 피연산자 중에서 Null이 아닌 것을 선택한다. ```dart const …

wikidocs.net