개발 환경:
VScode에서 dart, flutter를 추가해줌.
1. Hello world!
void main() {
print("Hello world");
}
2. 변수 선언!
void main() {
var name = "gyugyu";
print(name);
String name2 = "hunger";
print(name2);
}
=> 두 변수 선언 방법이 존재하고 둘은 다르지 않음. type-safe한 변수 선언을 지원하며 var name에서 자동으로 name의 타입이 String인걸 찾아줌. 단, 저 name에 이제 다른 타입은 넣을 수 없음
3. dynamic type!
void main() {
var name;
name = "nico";
name = 12;
print(name);
name = "asdf";
print(name);
if (name is String) {
print("it's string!");
}
}
하나의 타입을 지정하지 않고 여러 타입이 될 수 잇는 타입을 dynamic type이라 한다. 위에서 처럼 var name;으로 변수를 생성만 하고 초기화를 해주지 않으면 해당 변수(name)은 dynamic type이 된다.
위와 같이 여러 타입(Int or String or ...)이 될 수 있고 아래에서 if문과 함께 타입을 확인하고 사용할 수 있다.
4. null safety!
void main() {
String name = "gyu";
name = null;
}
nico 변수는 String 타입만 갖을 수 있기 때문에 null값을 갖지 못해 위의 코드는 오류가 생긴다.
void main() {
String? name = "gyu";
name = null;
if (name != null) {
print(name);
}
}
간단하게 타입의 마지막에 ?을 붙임으로 해당 변수의 타입으로 String,null 이 가능하다. 즉, 해당 변수가 null이 될 수 있는 가능성이 있다는 것을 알리는 것!
=> null을 참조할 경우 런타입에러로 프로그램이 멈추는 치명적인 오류가 생길 수 있는데 이를 방지하고자 만든것이다.\
void main() {
String? name;
name = null;
name?.isEmpty;
}
이 코드는 위의 if()부분을 짧게 구현한 것이다. name?.isEmpty가 의미하는 바는 name 변수가 null이 아니라면 isEmpty를 수행해라 라는 의미이다. (근데 코드로 저 변수 값을 null이 아닌 값으로 초기화하면 컴파일러가 알아서 "이 타입은 null일 수 없다"라고 얘기해준다)
5. final!
void main() {
final name = "gyu";
name = "ds";
}
final을 통해 상수를 선언할 수 있음. 위 코드는 상수인 name을 수정하려고 해 오류가 발생함.
6. const!
void main() {
const name = 'gyu';
}
기능적으로 final과 크게 다르지 않지만 const는 컴파일 타임에 이미 지정된 상수의 의미를 가진다. 만약 앱스토어에 나의 앱을 올릴때 특정 값을 사전에 지정하고 싶다면 const를 사용하는 것이다. 즉, 사용자의 I/O에 의해 결정되는 값이라면 var 혹은 final을 사용하면 되는 것.
'IT 일기 > Flutter!' 카테고리의 다른 글
Dart를 빠르게 알아보자 - class! #2 (0) | 2023.04.18 |
---|---|
Dart를 빠르게 알아보자 - class! #1 (0) | 2023.04.18 |
Dart를 빠르게 알아보자 - function! (2) | 2023.04.17 |
Dart를 빠르게 알아보자 - Data Type! (0) | 2023.04.16 |