노마드 코더의 'Dart 시작하기' 강의 #1 VARIABLES을 기반으로 정리하였습니다.
dart에는 2가지의 선언 방법이 존재.
1. var x = 'hello';
2. String y = 'hello';
var-> 함수나 메소드 안에서 지역 변수를 정의
타입 명 -> class 내의 property
최대한 var을 사용하는 것이 권장됨
null값을 참조하지 않게 막아주는 역할
기본적으로 모든 변수는 non-nullable
어떤 변수가 null이 될 수 있다면 -> ?을 표시
e.g. String? name -> String / null도 될 수 있음을 의미
사용하기 전에 null인지 체크해줘야 함
name?.isNotEmpty;
if(name != null) {
name.isNotEmpty;
}
-> name이 null이 아니라면 insNotEmpty 속성을 가져 옴.
언제 사용?
nullable을 위해서는 ?를 꼭 표시해야 함
js의 const와 동일한 개념
한 번 정의하면 바꿀 수 없음 (값을 재할당 할 수 없음)
어떤 타입이 들어올지 모를 때 사용
최대한 조심히 사용할 것
dynamic name;
//모두 가능
name = 'Jisoo'
name = 13
name = true
//dynamic 타입의 변수를 사용하기 전에 확인해야 함
if (name is String) {
//Something
}
초기 데이터 없이 변수 선언 가능
late final String name ;
//Do something (API에서 받아옴)
name = 'Jisoo';
언제 사용?
변수를 사용할 때, 변수에 값을 넣었는지 확인해 줌 (아직 정의되지 않은 변수를 사용하지 않도록)
값을 넣기 전에는 print(name); 등의 작업을 할 수 없음을 알려줌
의문점
그렇다면 API에서 name을 받아와야 한다면, 어떻게 선언?
late final String name; > API에서 받아온 값을 나중에 넣을 수 있음
String? name; > 처음에는 null이고, API 받아온 값을 나중에 넣음
dart의 const는 javascript,typescript와는 다르다.
dart의 final == js의 const
const
const가 될 수 없는 경우
<-> final
final은 런타임 중에(앱을 실행하면서) 변수를 만들 수 있음
form에 입력한 user name을 받아서 변수를 만들 수 있음
좋은 정보 얻어갑니다, 감사합니다.