DEVELOP
[Dart] 노마드코더 <Dart 시작하기> - 2. Variables
필맆
2024. 8. 16. 18:15
2강부터 본격적으로 Dart 언어를 사용하는 법을 배웠다!
내가 아는 거의 유일한 언어인 Python과 비교하며 공부하니 더 쉽게 이해할 수 있고 재미있었던 것 같다!
노마드 코더의 <Dart 시작하기> 강의를 수강하며 공부한 내용을 정리한 글입니다. 수업 중 사용한 코드들과 Dart언어에 관한 기본적인 개념과 그에 대한 이해를 정리하였습니다. 이후 Flutter 사용을 위한 기초를 닦는 경험이 되었습니다.

아래가 Dart의 가장 기본인 main함수의 기본 형태이다! 마치 파이썬의 print("Hello World")
void main() {
print('Hello World');
}
- 동작을 위한 코드는 꼭! main함수 안에 작성해야함
변수 생성
- Var 키워드 사용
- Type 지정(ex. String)
void main() {
var name = '니꼬';
}
// 변수 업데이트 시 변수 타입 일치해야함
void main() {
var name = '니꼬';
name = 'nico'; //가능
// name = true ... 불가능
}
void main() {
String name = '니꼬';
name = 'nico';
}
//위처럼 var이 아닌 변수 타입 지정과 동시에 변수 생성 가능
이렇게 두 가지 방법으로 변수 생성이 가능함.
- 관습적으로 함수나 메소드 내부에 지역 변수 선언 시에는 var을 주로 사용
- class에서 변수나 property 선언 시에는 type을 지정하는 방법 사용
Dynamic Type
- dart는 사용자 친화적임
- 그 중에 하나가 multiple type을 가질 수 있는 변수 dynamic
void main() {
var name;
name = 'nico';
name = 12;
name = true;
}
위의 name과 같이 dynamic 변수 지정 가능
- 마찬가지로 var 대신 dynamic으로 변수 지정 가능
void main() {
var name;
if(name is String){
//name.~~~
}
}
위와 같이 dynamic으로 지정된 변수가 if문 안에서는 String으로 인식되어 여러 option 사용 가능.
Nullable Variables
null safety
- 개발자가 null값을 참조할 수 없도록 하는 기능
- *만약 null을 참조하게 되면 런타임에러 발생: NoSuchMethodError
⇒ 어떤 변수가 null이 될 수 있음을 명확히 표시해야 함!
void main() {
String? nico = 'nico';
nico = null;
}
//아래와 같이 사용 가
void main() {
String? nico = 'nico';
nico = null;
if (nico != null) {
nico.isNotEmpty;
}
}
//아래와 같은 의미: nico가 있는지 확인한 후 이후의 연산을 작
void main() {
String? nico = 'nico';
nico = null;
nico?.isNotEmpty; //nico가 null이 아니라면 isNotEmpty속성을 달라고 요
}
위와 같이 변수타입 뒤에 ‘?’를 붙임으로써 null이 될 수 있음을 표시
Final Variables
- 지금까지의 변수들은 나중에 수정 가능
- B final변수는 이후에도 수정이 불가능!!
- javascript나 typescript의 const와 같음
void main() {
final name = 'nico';
}
//type 설정도 가능
void main() {
final String name = 'nico';
}
Late Varibales
- late 수식어 : final이나 var앞에 붙여줄 수 있는 수식어
- 초기 데이터 없이 변수를 선언할 수 있게 해줌!
void main() {
late final String name;
//do something, go to api 등등
name = 'nico';
//여전히 final 변수이기 때문에
//name='12'등 불가
}
//변수 지정 전까지 접근 불가능(일종의 null safety 작동)
- flutter로 data fetching할 때에 유용!
Constant Variables
- 키워드, 상수
- compile-time constant를 생성!
- 얘도 수정 불가능
- javascript나 typescript와 다름! —얘네는 final과 비슷
- final과의 차이점
- final은 런타임 중에 만들어질 수 있음(ex.사용자가 앱 사용 중에 입력한 정보로 지정 가능)
void main() {
const max_allowed_price = 120;
}
const는 컴파일할 때 알고있는 값을 사용해야 함!
- 어떤 값인지 모르고, API로부터 오거나 사용자가 화면에서 입력해야 하는 값이라면 final이나 var이 되어야 함.
- const: 컴파일 시점에 바뀌지 않는 값(상수)
- final: 컴파일 시점에 바뀌는 값(API에서 받아온 값, 사용자 입력 값)