1. 변수선언
- dart만 실행하기 위해 dartpad.dev를 이용한다.
- dart는 main을 찾아 실행한다.
- ';' (세미콜론)이 꼭 붙어있어야 한다
- 실제로 실행하는 코드는 꼭 main함수 안에 있어야 함
void main() {
print("hello world");
}
- 변수는 기본적으로 var를 통해 명시한다.
- 함수나 메서드 내부에 지역변수를 선언할 때 주로 사용
- 명시적으로 레퍼런스를 통해(타입으로 지정) 변수를 지정할수도 있다.
- class나 property를 선언할때 주로 사용
- 변수의 타입을 지정하지 않아도 자동으로 레퍼런스를 생성한다.
- 변수를 수정할때는 지정한 타입과 동일한 타입으로 수정해야 한다.
void main() {
#기본적인 변수 선언
var name = "mansooor"
#타입명시하여 변수 선언
String name = "mansoor"
#아래와 같이 변수 수정 불가(타입변경됨)
name = 1 (x)
#변수 수정 가능(타입일치)
name = "roosnam"
}
2. Dynamic
- 여러가지 타입을 가질수 있는 변수에 쓰는 키워드
- 먼저 선언하고 값을 넣지 않으면 dynamic타입이 됨
void main() {
var name; #변수 이름만 명시: dynamic type이 됨
name = "mansoor" #string가능
name = 12 #int도 가능
name = true #bool도 가능
}
3. Final
- 한번 정의된 변수를 변경하지 못하게 하기 위해 사용
- js, ts의 const와 비슷
4. Late
- 초기 데이터 없이 변수를 선언할 수 있게 해줌
- API등 나중에 데이터를 받아올때 사용됨
- 값을 넣기 전에는 접근 못함
5. Constant
- javascript나 typescript의 const와는 다름
- compile-time constant를 만들어줌
- final 처럼 한번 명시하면 수정이 안됌
- 컴파일할때 알고있는 값에 사용
- 쉽게 말하면 사용자가 입력해야 하는 값이나, API에서 받아와야 하는 값에는 사용하지 못함
- 정확하게 알고 있는 값에만 사용
6. Nullable Variables
- ? 를 사용하여 null 값을 허용
- 이를 사용해 예외를 방지가능
- 타입을 명시하면 해당 타입의 객체만 할당 가능(모든 변수는 기본적으로 non-nullable)
void main() {
String name = "mansorrr"; #변수 생성시 String으로 지정
name = null; #변수를 null로 변경
}
void main() {
String? name = "minsoor"; #?를 사용하여 변수 지정
name = null; #변수 업데이트
print(name);
}
- nullable 변수를 사용하면 null값을 처리하지 않은 상태로 실행가능
- 이러면 error가 발생함
- 따라서 null인지 아닌지 판별할 수 있도록 코드를 작성해야 함
void main() {
String? name = "minsoor";
name = null;
if (name != null) {
print("$name is not null");
} else {
print("name is null");
}
}