반응형
Null safety : 개발자가 'null'값을 참조하지 못하도록 하는 것.
만약, 코드에서 null값을 참조한다면 런타임 에러가 나타남!(컴파일러가 못잡는 에러!)
-> 런타임에러가 뜬다는 것은... : 앱을 사용하던 도중에 뜨는 에러라는 것
물론, 'null'은 '존재하지 않음'을 의미하며 이는 코딩 하다보면 매우 유용하게 사용하게 된다.
dart에서는 어떤 변수가 'null'이 될 수 있음을 꼭 표시해야 한다.
아래 코드블럭처럼 그냥 변수 nico를 선언한다면 null값을 넣을 수 없다.
String nico1 = 'nico';
nico1 = null; // <- 에러 뜬다.
변수 타입을 지정해주는 'String'뒤에 '?'를 넣어주면 null값을 받을 수 있다!
String? nico2 = 'nico';
nico2 = null;
'String?'이렇게 물음표를 붙이게 되면 dart에서 자동으로 이 변수는 'null'값이 가능함을 알게 된다.
따라서...
nico1.length; // 에러 안뜸
nico2.length; // 에러 뜸
이렇게 nico1의 길이는 가져올 수 있지만, nico2는 null값이 가능하기 때문에 길이를 가져올 수 없다.
(에러 위에 커서를 올리면 null값이 될 수 있다고 경고하는 것을 볼 수 있을 것이다.)
그래서 nico2에 에러가 생기지 않도록 하려면 'null'이 아닌 경우를 한정해줘야 한다!
// 방법 1
if (nico2 != null) {
nico2.isNotEmpty;
}
// 방법 2
nico2?.isNotEmpty;
위의 코드는 null이 아닌 경우에 'isNotEmpty' 속성을 달라고 요청하는 코드이며 방법1과 방법2는 동일한 방법이다.
'nico2?'이게 'nico2가 null이 아닐 경우에' 라는 의미이다.
매우 잘 써먹을 수 있을 것 같다.
반응형
'앱 만들기 프로젝트 > Dart' 카테고리의 다른 글
Dart - 1.5 Late Variables (0) | 2023.02.28 |
---|---|
Dart - 1.4 Final Variables (0) | 2023.02.28 |
Dart - 1.2 Dynamic Type (0) | 2023.02.26 |
Dart - 1.1 The Var Keyword (0) | 2023.02.26 |
Dart - 1.0 Hello World (0) | 2023.02.25 |