Dart에서 ?? 연산자와 ??= 연산자
Contents
??
연산자(’null operator’ 라고 부르나 봄)는 왼쪽 표현식이 null이 아니면 그걸 취하고, null 이면 오른쪽 표현식을 취함.??=
연산자(’null-aware operator’ 라고 부르나 봄)는 현재 변수의 값이 null 일때만 오른 쪽 값 assign.
처음보는 사람은 모를 수 있으니 안쓰는게 깔끔할 것 같은데, 가끔 보이는 것 같으니 알아두도록 하자.
1. ?? 연산자
🔶 ??
연산자 사용해서 함수 구현
String playerName(String? name) => name ?? 'Guest';
🔶 삼항 연산자 (condition) ? (expr1) : (expr2)
로 같은 함수 구현
// Slightly longer version uses ?: operator.
String playerName(String? name) => name != null ? name : 'Guest';
🔶 if-else 로 같은 함수 구현
// Very long version uses if-else statement.
String playerName(String? name) {
if (name != null) {
return name;
} else {
return 'Guest';
}
}
2. ??= 연산자
// Assign value to a
a = value;
// Assign value to b if b is null; otherwise, b stays the same
b ??= value;
다른 예제
void main() {
int value;
print(value); // <- null
value ??= 5;
print(value); // <- 5, changed from null
value ??= 6;
print(value); // <- 5, no change
}
99. Reference
- Language Tour - Conditional expressions | 공식 문서
- Language Tour - Assignment operators | 공식 문서
- What are ??, ??=, ?., …? in Dart? | medium 블로그