728x90
Dart에서 ?.와 ??는 널 안전성을 다루기 위해 사용하는 연산자입니다. 각 연산자의 역할과 사용 예시는 다음과 같습니다:
1. ?. 연산자 (널-세이프 접근 연산자)
- 기능: 객체가 null인지 확인하고, null이 아닐 때만 접근합니다.
- 사용 목적: 객체가 null일 가능성이 있을 때, null 에러를 방지하고 안전하게 접근하기 위해 사용합니다.
예제:
String? name;
print(name?.length); // name이 null이면 null을 반환, null이 아니면 length를 반환
위 예제에서 name이 null일 경우, name?.length는 null을 반환하며 오류 없이 코드가 실행됩니다.
2. ?? 연산자 (널 병합 연산자)
- 기능: 왼쪽 값이 null이면 오른쪽 값을 반환하고, null이 아니면 왼쪽 값을 반환합니다.
- 사용 목적: 변수나 값이 null일 때 대체할 기본값을 제공하기 위해 사용합니다.
예제:
String? username;
String displayName = username ?? "Guest";
print(displayName); // username이 null이면 "Guest"가 출력됨
여기서 username이 null이면 "Guest"가 displayName에 할당됩니다. username이 null이 아니면 username의 값이 사용됩니다.
?.와 ??를 함께 사용하는 예제
이 두 연산자는 함께 사용할 수 있습니다. 예를 들어, 객체 속성에 안전하게 접근하고, null일 경우 기본값을 제공하려면 아래와 같이 작성할 수 있습니다:
class User {
String? name;
}
void main() {
User? user;
print(user?.name ?? "Unknown"); // user 또는 user.name이 null일 경우 "Unknown"을 출력
}
여기서 user가 null이면 user?.name도 null을 반환하고, ?? 연산자를 통해 "Unknown"이 출력됩니다.
요약
- ?.는 객체가 null이 아닐 때만 접근하도록 하여 null 에러를 방지합니다.
- ??는 null일 경우 기본값을 제공하여 안정적인 값을 반환합니다.
728x90
'Category > Dart' 카테고리의 다른 글
Dart 언어에서 비동기 프로그래밍을 할 때 사용하는 Future 객체 알아보기 (2) | 2024.09.28 |
---|---|
factory 키워드 - Dart 언어에서 팩토리 생성자 정의하기 (1) | 2024.09.28 |