본문 바로가기
개발/Dart

Dart 기본 - 16. QQ 연산자 사용 방법, 삼항연산자보다 간편하게 쓰기

by 왼하루 2023. 2. 4.
반응형

Dart에서 QQ 연산자는 특정 조건을 만족하는 값을 평가하는 것을 간소화하기 위해 사용되는 중요한 연산자입니다. QQ 연산자는 "??", "if null operator" 또는 "null coalescing operator"라고도 불립니다. 이 연산자는 특정 값이 null이면 다른 값을 반환하도록 지정할 수 있습니다.

 

 

Dart QQ 연산자 사용

Dart의 ?? 연산자는 값이 null인 경우 대체 값을 제공하는 데 사용됩니다. 이 연산자는 종종 null 병합 연산자라고도 불립니다. 이 연산자를 사용하면 코드가 간결해지고 null 체크를 줄일 수 있습니다.

 

 

QQ 연산자 사용 방법

QQ 연산자는 다음과 같은 형식으로 사용합니다.

value1 ?? value2

 

위와 같이 사용할 경우, value1null이면 value2를, value1null이 아니면 value1을 반환합니다.

 

void main() {
  // nullable 변수로 선언
  String? name = "John";
  String nickname = name ?? "No name";
  print(nickname);
  // output: John
  
  name = null;
  nickname = name ?? "No name";
  print(nickname);
  // output: No name
}

 

QQ 연산자를 사용하여 namenull인 경우에만 No name을 반환하는 것을 확인할 수 있습니다.

결과

 

 

??= 연산자 사용

?? 연산자는 왼쪽 값이 null 인지 체크해서 null 이 아니면 왼쪽 값을, null 이면 오른쪽 값을 리턴하였습니다. ??= 연산자는 변수 안에 값이 null 일 때를 체크해서 값을 할당할 수 있습니다.

 

void main() {
  String? name;
  name ??= "John";
  print(name);
  // output: John
  
//   name = null;
  name ??= "jin";
  print(name);
  // output: John
}

 

위 코드에서 nullable 변수로 선언된 name의 초기 값이 없기 때문에, ??= 연산자로 인해 첫번째 print 문장은 John으로 출력됩니다.

 

이어서

name ??= "jin";

 

위 문장은 앞에서 name이 John이 되었기 때문에, name 은 계속 John이 됩니다. 

John 출력

 

이 경우, name을 다시 null 로 초기화 해주면 ??= 연산자로 인해 name은 jin으로 변경됩니다.

jin 출력

 

 

QQ 연산자와 삼항 연산자 비교

QQ 연산자와 삼항 연산자는 비슷한 기능을 가지지만, 간단하고 가독성이 높은 표현을 제공한다는 점에서 차이가 있습니다. 예를 들어, 다음은 name 변수가 null인 경우에 Unknown을 반환하는 삼항 연산자의 코드입니다.

String name = null;
print(name != null ? name : 'Unknown');

 

비교해 보면, QQ 연산자는 코드가 더 간결하고 가독성이 높아서, 좀 더 편리하게 사용할 수 있습니다.

 

 

마무리

Dart의 QQ 연산자는 null 병합, 조건부 값 반환, 기본값 지정 등의 기능을 가지고 있어, 간단하고 가독성이 높은 코드 구현이 가능합니다. 삼항 연산자와 비교해보면, 더 편리하고 가독성이 높은 코드 구현이 가능하다는 점에서 유용한 연산자입니다.

 

오늘도 행복한 코딩생활 되시길 바라겠습니다.

 

감사합니다.

 

댓글