본문 바로가기
개발해보겡/Flutter

Dart ?? QQ Operator

by 개발자욱 2023. 1. 3.
728x90
반응형

QQ operator는 다음과 같은 코드를 더욱 간단하게 만들어 줍니다.

String UpperString(String? word) {
  // 1. if 문
  if (word != null) {
   return word.toUpperCase();
  }
  // 2. 삼항연산자
  return word != null ? word.toUpperCase() : '';
}

UpperString() 함수에 전달된 값이 null이 아닐 때 toUpperCase() 메소드를 실행하는 코드입니다.

String UpperString(String? word) {
  return word?.toUpperCase() ?? '';
}

word가 null이 아니면 toUpperCase() 메소드를 실행하고 아니면 빈 문자열을 반환합니다.

String UpperString(String? word) {
  // 1. if 문
  if (word != null) {
   return word.toUpperCase();
  }
  return '';
  
  // 2. 삼항연산자
  return word != null ? word.toUpperCase() : '';
  
  // 3. QQ operator
  return word?.toUpperCase() ?? '';
}

void main() {
  var upper_string = UpperString(null);
  print(upper_string);
}

위의 코드를 주석 처리해서 테스트 해보시면 모두 동일한 결과가 잘 나오는 것을 확인할 수 있습니다.

추가적으로

void main() {
  String? name;
  name ??= 'name'; // name이 null이면 문자열 할당
  name ??= 'nickname'; // 오류 
  name = null; // null
  name ??= 'nickname'; // 정상
  print(name);
}
반응형