반응형
다트 언어에서는 Null Safety 라고 해서 Null 값이 나오지 않도록 코딩 단계에서 부터 검사를 해주는데요. 예를 들어서 launchDate 값는 Spacecraft 라는 클래스 안에서 사용되어지는 변수이지만 DateTime 이라는 변수 타입 오른쪽에 ? 표시는 초기값이 세팅이 되어있지 않기 때문에 Null 값이 될 가능성이 있기 때문에 ? 표시를 하고 생성자를 통해서 값이 세팅이 되기 때문에 문제가 없습니다.
Null Safety 는 컴파일 단계에서 체크를 하기 때문에 Null 값이 들어갈 가능성이 있는 변수에는 ? 표시를 해주어야 합니다.
참고로 ~/ 표현식은 나누기 해서 그 값이 소수가 아닌 정수값으로 가져올 때 사용합니다.
class Spacecraft {
String name;
DateTime? launchDate;
// Read-only non-final property
int? get launchYear => launchDate?.year;
// Constructor, with syntactic sugar for assignment to members.
Spacecraft(this.name, this.launchDate) {
// Initialization code goes here.
}
// Named constructor that forwards to the default one.
Spacecraft.unlaunched(String name) : this(name, null);
// Method.
void describe() {
print('Spacecraft: $name');
// Type promotion doesn't work on getters.
var launchDate = this.launchDate;
if (launchDate != null) {
int years =
DateTime.now().difference(launchDate).inDays ~/ 365;
print('Launched: $launchYear ($years years ago)');
} else {
print('Unlaunched');
}
}
}
반응형
'IT News > Flutter & Dart' 카테고리의 다른 글
Flutter 앱 권한(permission) 요청하기 (0) | 2022.03.02 |
---|---|
다트언어(Dart language)의 기본 : 코멘트(comment), 임포트(import), 에로우함수(arrow) (0) | 2022.01.01 |
Dart 언어에서 Operator(오퍼레이터) 의미 (1) | 2021.12.24 |