?
- ? - 초기화 하지않은 변수들은 nullable type에서 초기값을 null을 가지고 있다.
- 모든 변수 타입에는 nullable type이 존재한다
- 변수명 뒤에 ? 를 선언한 변수를 nullable 변수 라고 부른다.
- 반대로는 변수명 뒤에 ? 를 선언하지 않는 변수를 non-nullable 변수 라고 부른다.
void main() {
String? name;
print(name); // null 출력
}
late
- Dart 2.12 버전에 추가되었다. 2가지 의 경우에서 사용을 한다.
- 선언 후에 초기화를 하지 않는 non-nullable 변수(int, String ...)에 사용된다.
- 나중에 변수를 초기화 할때 사용된다.
late String description;
void main() {
description = 'Feijoada!';
print(description);
}
?? (if null)
- expr1 ?? expr2
- parameter가 null 아닐 경우 expr1 을 반환, null 일 경우 expr2 를 반환한다.
void main() {
String? name;
print(playerName(name));
}
String playerName(String? name) => name ?? "Guest";
?. - (Conditional member access)
- ?. 는 왼쪽에 있는 피연산자가 null이면 에러 대신 null 을 반환한다.