Dart 설치 없이 코드 연습하는 사이트
The Var Keyword
변수 타입을 지정할 수도 있고, var으로 쓸 수도있다.
void main() {
int a = 10;
var b = 100;
}
dart에서는 가이드를 제공하는데,
함수나 메소드 내부에 지역 변수를 선언할 때는 var을 사용.
class에서 변수나 property를 선언할 때는 타입을 지정.
그리고 변수는 데이터의 타입만 유지하면 업데이트 가능하다.
Dynamic Type
void main() {
dynamic name; //var name; 도 가능.
if(name is String) {
name.length;
}
}
타입을 모를 때, dynamic을 붙일 수 있다.
만약 데이터를 받아야 하는데, 데이터의 타입을 모른다고 치자.
dynamic을 이용하면 dart가 데이터 타입을 확인할 수 있게 도와준다.
이상적으로 쓰는 걸 추천하지 않지만, 꼭 필요할 때 사용하자.
Nullable Variables
null safety는 개발자가 null 값을 참조하지 없도록 하는 것.
만약, null 값을 참조하면 런타임 에러가 발생하는데,
이상적으로는 컴파일 전에 에러를 잡아내야 한다.
그러나, 컴파일러가 못 잡아내는 에러.
null 자체는 유용하기 때문에 null을 없애는 것은 좋은 해결책이 아니다.
⇒ dart에서는 어떤 변수가 null이 될 수 있음을 정확히 표시해야 함.
?만 넣어주면 된다.
void main() {
String? name = 'hoseok';
name = null;
if(name != null) {
name.isNotEmpty;
}
}
?만 넣어주면 컴파일러가 null이 될 수 있음을 알게 된다.
기본적으로 dart의 모든 변수는 non-nullable.
?만 넣어주면 nullable로 변함.
즉, null safety는 어떤 변수, 혹은 데이터가 null이 될 수 있음을 명시하는 것.
void main() {
String? name = 'hoseok';
name = null;
name?.isNotEmpty;
}
이렇게 단축 문법으로 사용할 수도 있다.
Final Variables
한 번 정의된 변수를 수정할 수 없게 만드려면 final을 사용하자.
void main() {
final name = 'hoseok';
}
void main() {
final String name = 'hoseok';
}
둘 다 사용 가능하나, dart가 알아서 추론하므로 final만 붙여도 된다.
Late Variables
late은 final이나 var 앞에 쓸 수 있는데,
초기 데이터 없이 변수를 선언할 수 있게 해준다.
예를 들어, api 요청으로 데이터를 받은 다음
그 데이터를 나중에 변수에 넣으면 된다.
void main() {
late final String name;
// api 요청을 받음
name = 'hoseok';
}
값을 넣기 전에는 접근할 수 없다.
flutter로 data fetching을 할 때, 매우 유용하다.
Constant Variables
const는 javascript나 typescript에서의 const와는 다르다.
javascript나 typescript에서의 const는 final과 비슷하지만,
dart에서의 const는 compile-time constant를 만들어 준다.
const는 final처럼 수정될 수 없고,
가장 중요한 점은 compile-time에 알고 있는 값이어야 한다는 것.
어떤 값인지 모르고, 그 값이 api로부터 온다거나,
사용자가 화면에서 입력해야 하는 값이라면 그것은
final이나 var가 되어야 한다.
void main() {
const name = 'hoseok';
}
예를 들어, max_allowed_price 처럼 이미 값을 알거나, 정하고 있는 것들에
const를 써준다.
'Skills > Dart' 카테고리의 다른 글
Dart에서의 super 키워드 (0) | 2024.02.07 |
---|---|
final과 const의 차이 (1) | 2024.02.07 |
Dart의 필수, 선택적, 명명 매개변수 알아보기 (0) | 2024.02.06 |