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