다트는 기본적으로 변수는 null을 가질수 없고 null로 인해 발생하는 오류를 방지하기 위한 여러가지 기법들이있다.
1. 널 강제 해제 연산자 !
(Null Assertion Operator)
- 설명: 이 연산자는 변수가 절대
null
이 아니라고 확신할 때 사용합니다.null
값을 무시하고 변수의 값을 강제로 사용할 수 있게 합니다.
- 주의점: 만약 변수에
null
이 존재할 경우, 런타임 오류가 발생합니다. 매우 신중하게 사용해야 하며, 이 연산자는 위험할 수 있습니다.
//null 처리 방법
int? findById(int id) {
return id == 1 ? 1 : null;
}
void main() {
int r1 = findById(1)!; // 무조건 있어 !! 위험한 코딩
print(r1);
}
2. 널 대체 연산자 ??
(Null Coalescing Operator)
- 설명: 이 연산자는 왼쪽 피연산자가
null
일 때, 오른쪽의 대체값을 반환합니다. 이를 통해null
값 대신 기본값을 설정할 수 있습니다.
int r2 = findById(5) ?? 0; // findById(5)가 null이면 0을 반환
3. 널 안전 호출 연산자 ?.
(Null-aware Operator)
설명: 이 연산자는 변수가
null
일 경우 그 뒤의 메서드나 속성에 접근하지 않고 null
을 반환합니다. 이를 통해 null
값에서 발생할 수 있는 메서드 호출 오류를 방지합니다.
double r3 = findById(5)?.toDouble() ?? 0.0; // findById(5)가 null이면 toDouble()을 실행하지 않음
4. 활용 널 안전 호출 연산자 ?. 와 널 대체 연산자 ?? 같이
int? findById(int id) {
return id == 1 ? 1 : null;
}
void main() {
double r3 = findById(5)?.toDouble() ?? 0;
print(r3);
}
Share article