Dart/기초

[Dart 기초] Null-aware Operators

뿌비 2024. 8. 2. 22:21
728x90
많은 Operators 중에서 ?? 과 ?= 만 정리해 보았다

 

🔥  예시) null 값이 나올 수 있는 상황 

아래의 코드에서 함수 호출 시 제대로 된 값이 아닌 null을 보낼 수도 있는 상황에 대비해 null 체크를 해줘야 한다

// 이름을 대문자로 return 하는 함수 
String capitalizeName(String name) => name.toUpperCase();
// 호출
capitalizeName('nana');

방법 1. 아래의 코드처럼 파라미터 부분에 해당 파라미터가 null 일수도 있다는? 를 쓴 후 if로 조건을 주어도 되지만 코드가 조금 길어지니 줄여보자 

// String? name : 파라미터 name의 값이 null or 값 이라는 뜻
String capitalizeName1(String? name) {
  if(name != null){
    return name.toUpperCase(); 
  }
  return 'haha';
};
capitalizeName1('nana');

 

방법 2. 화살표 함수와 삼항 연산자를 사용해 코드를 줄이고 null 값을 체크할 수도 있다  

String capitalizeName2(String? name) => name != null ? name.toUpperCase() : 'haha';
capitalizeName2('nana');
이번엔 ?? 과 ?= 를 써보자..! 

🔥 QQ 연산자 (?? 과?= )

  • if null operator  또는 null coalescing operator라고도  한다
  • 이 연산자는 값이 null인 경우 대체 값을 제공하는 데 사용된다

🔥  ?? 

  • ?? 를 기준으로 왼쪽의 값이 null이면 오른쪽의 값을 return 한다 
  • 왼쪽 값이 null 이 아니면 그대로 왼쪽 값을 return 한다
//아래의 코드에서는 null 일 때 toUpperCase 할 수 없기 때문에 name 뒤에? 써서 null 이 아닐 때만 하도록 해준다
String capitalizeName3(String? name) => name?.toUpperCase() ?? 'haha';

// 파라미터 name 값이 있을때 
capitalizeName3('nana'); // 결과 값 : nana

// 파라미터 name 값이 null 일때 
capitalizeName3(null); // 결과 값 : haha

🔥  ?=

  • null-aware assignment 이라고도 한다 
  • 해당 변수가 null 일때 특정 값을 넣을 수 있다 
String? val; // null 이 될수도있는 변수 선언 
val ??= 'nana'; // val 이 null 이면 nana 값을 넣어달라는 코드이다

※ Reference

https://nomadcoders.co/ [노마드코더 강의 참고]

https://www.darttutorial.org/dart-tutorial/dart-null-aware-operators/

https://dart.dev/language/operators

 

728x90