[Flutter / Dart] Dart 기초문법(변수 선언)
1.1 메인함수
다트는 프로그램 시작점인 엔트리 함수 기호로 `main()`을 사용함.
void main() {
}
중괄호 사이에 원하는 코드를 입력하면 됨. void는 아무 값도 반환하지 않는다는 뜻임.
main뒤에 () 안에 입력받을 매개변수를 지정할 수 있음. 비어있으면 아무런 매개변수도 받지 않는다는 뜻!
1.2 print() 함수
print() 함수는 문자열을 콘솔에 출력하는 함수
void main() {
// 콘솔에 출력
print('hello world');
}
1.3 var를 사용한 변수 선언
void main() {
var name = '이도서';
print(name);
}
// 출력값
// 이도서
void main() {
var name = '이도서';
print(name);
name = '도서';
print(name);
}
// 출력값
// 이도서
// 도서
여기서 `name`이라는 변수에 이도서를 할당하고 그다음 도서로 변수값을 변경했는데 이도서, 도서 둘다 출력이 될까?
=> 첫 번째 할당에서의 '이도서'를 `print(name)`으로 출력한 후, 변수값을 '도서'로 새로 할당한 후 다시 `print(name)`을 실행했기 때문에 두 값다 출력이 되는 것임!
1.4 dynamic을 사용한 변수 선언
`var`는 변수의 값을 사용해서 변수의 타입을 유추하는 키워드임. 타입을 한번 유추하면 추론된 타입이 고정됨!
`dynamic`을 사용하면 변수의 타입이 고정되지 않아서 다른 타입의 값을 저장할 수 있음.
void main() {
dynamic name = '이도서';
print(name.runtimeType); // String
name = 1;
print(name.runtimeType); // Int
}
// .runtimeType은 실행될 때 그 변수의 타입을 알려주는 것
위 코드를 보면, '이도서'는 처음에 String으로 판단이 됐으나 `dynamic`을 사용하고 있어서
다음에 `name`을 1로 바꿨을 때 String이 아닌 Int로 타입이 변환된걸 확인할 수 있음.
1.5 final / const를 사용한 변수 선언
`final`과 `const`키워드는 변수의 값을 처음 선언한 후 변경할 수 없음.
void main() {
final String name = '이도서';
name = 'Leedoseo'; // 런타임 에러
const String name2 = '도서';
name = 'Doseo'; // 컴파일 타임 에러
}
`final`과 `const`의 차이점!
값 변경 가능? | ❌ 불가능 | ❌ 불가능 |
실행 시간에 값 결정? | ✅ 런타임에 결정 가능 | ❌ 컴파일 타임에 결정해야 함 |
클래스에서 사용 가능? | ✅ 가능 | ✅ 가능 |
실행 중 변수 초기화 가능? | ✅ 가능 | ❌ 불가능 (무조건 상수) |
좀 더 딥하게 들어가보면 !
`final`은 런타임, `const`는 빌드 타임 상수임. 그 차이점을 알아보기 위해 `DateTimenow()`를 사용해 알아보겠음
void main() {
final DateTime now = DateTime.now();
print(now);
}
// 출력값
// 2025-03-17 16:23:12.295
`final`키워드를 사용했으니 `now`값이 저장이 됐음. 한 번 저장이 되면 이 값은 변경을 할 수가 없음.
반면에 `const`는 에러가 나타남. `const`는 빌드 타임에 값을 알 수 있어야 하는데
`DateTime.now()`함수는 런타임에 반환되는 값을 알 수 있기 때문임.
void main() {
// 에러 발생
const DateTime now = DateTime.now();
print(now);
}
즉, 코드를 실행하지 않은 상태에서 값이 확정되면 `const`를, 실행될 때 확정이 나면 `final`을 사용하면 됨!
https://github.com/Leedoseo/Flutter_DartBasic
GitHub - Leedoseo/Flutter_DartBasic
Contribute to Leedoseo/Flutter_DartBasic development by creating an account on GitHub.
github.com
https://www.notion.so/Dart-Flutter-Study-1cf9fd9f157980a5ab7efad394810871?pvs=4
Dart / Flutter Study | Notion
Made with Notion, the all-in-one connected workspace with publishing capabilities.
www.notion.so
출처: 코드팩토리의 플러터 프로그래밍 3판
'Dart 언어' 카테고리의 다른 글
[Flutter / Dart] Dart 기초문법(함수와 람다) (2) (0) | 2025.04.03 |
---|---|
[Flutter / Dart] Dart 기초문법(함수와 람다) (1) (0) | 2025.04.02 |
[Flutter / Dart] Dart 기초문법(제어문) (0) | 2025.03.31 |
[Flutter / Dart] Dart 기초문법(연산자) (0) | 2025.03.31 |
[Flutter / Dart] Dart 기초문법(컬렉션) (0) | 2025.03.29 |