앱 만들기 프로젝트/Dart

Dart - 1.3 Nullable Variables

지나가는물리학부생 2023. 2. 27. 22:06
반응형

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이 아닐 경우에' 라는 의미이다.

 

매우 잘 써먹을 수 있을 것 같다.

 

강의 : https://nomadcoders.co/dart-for-beginners/lobby

반응형

'앱 만들기 프로젝트 > 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