플러터를 활용해 간단한 앱을 개발해보고 싶어서 하나하나 준비해봅니다. (온라인 강좌, 챗GPT)
Dart는 구글e에서 개발한 오픈소스 프로그래밍 언어로, 특히 Flutter 프레임워크에서 모바일 및 웹 애플리케이션 개발에 널리 사용됩니다. 이번 글에서는 Dart의 주요 특징, main 함수의 역할, 변수와 자료형, 그리고 dynamic 타입에 대해 살펴보겠습니다.
Dart 언어의 주요 특징
Dart는 정적 타입 언어이지만 유연한 타입 시스템을 제공하며, 다음과 같은 특징을 갖고 있습니다:
- JIT(Just-In-Time) 및 AOT(Ahead-Of-Time) 컴파일 *JIT와 AOT도 공부해야 하네요.;;;;
- 개발 중에는 JIT 컴파일을 사용해 빠른 코드 실행과 핫 리로드(Hot Reload)를 지원합니다.
- 실제 배포 시에는 AOT 컴파일을 통해 최적화된 성능을 제공합니다.
- 객체지향 언어
- 모든 것이 객체(Object)이며, 클래스(Class)와 상속(Inheritance)을 지원합니다.
- Null Safety 지원
null
값을 허용하지 않는 강력한 타입 시스템을 제공하여, NPE(Null Pointer Exception)를 방지할 수 있습니다.
- 비동기(Asynchronous) 프로그래밍 지원
Future
와Stream
을 사용하여 비동기 작업을 효과적으로 처리할 수 있습니다.
- 간결하고 직관적인 문법
var
,final
,const
등 키워드를 사용하여 가독성이 높은 코드를 작성할 수 있습니다.
Dart의 main 함수
Dart 프로그램의 진입점(Entry Point)은 main
함수입니다. 모든 Dart 프로그램은 main()
함수에서 실행이 시작됩니다.
void main() {
print("Hello, Dart!");
}
main 함수 특징
main
함수는 반환값이 없는void
타입입니다.- 프로그램 실행 시 가장 먼저 호출됩니다.
- 비동기 작업이 필요한 경우
async
키워드를 사용할 수 있습니다.
void main() async {
await fetchData();
}
변수와 자료형
Dart에서는 정적 타입 언어이지만, 타입 추론이 가능하여 var
키워드를 통해 자동으로 자료형을 결정할 수도 있습니다.
var 키워드를 잘 활용하면 좋지만 초반에 언어를 배울 때는 자료형 별로 키워드를 사용하는 것이 좋을 것 같습니다.
변수 선언 방식
void main() {
// 명시적 타입 지정
int number = 10;
double price = 99.9;
String name = "Dart";
bool isActive = true;
// 타입 추론 (var 사용)
var message = "Hello"; // message는 String 타입으로 결정됨
// final과 const
final String finalValue = "변경 불가";
const double pi = 3.1415;
}
final
과 const
의 차이
키워드 | 특징 |
---|---|
final | 한 번만 할당 가능하지만, 실행 중 결정 가능 |
const | 컴파일 타임에 상수로 결정됨 |
final now = DateTime.now(); // 실행 중에 값이 할당됨
const value = 10; // 컴파일 타임에 값이 확정됨
dynamic
타입
Dart에서 dynamic
타입은 런타임에 자료형이 결정되는 변수를 선언할 때 사용됩니다.
dynamic value = "Hello";
value = 42; // 다른 타입으로 변경 가능
value = true; // 또 다른 타입으로 변경 가능
dynamic
vs var
키워드 | 특징 |
var | 한 번 타입이 정해지면 변경할 수 없음 |
dynamic | 모든 타입을 가질 수 있으며 변경 가능 |
var name = "Dart";
// name = 42; // 오류 발생 (String으로 결정됨)
dynamic age = 25;
age = "스물다섯"; // 정상 작동 (타입 변경 가능)
하지만 dynamic
을 과도하게 사용하면 타입 안정성을 해치고 오류를 유발할 가능성이 높아지므로, 특별한 경우가 아니라면 명확한 타입을 지정하는 것이 권장됩니다. dynamic
과 var
는 말로만 보면 상당히 헷갈리는데 실제로 코드를 넣어보면 아주 단순합니다.
dart 가 쉬운 언어라고들 하던데 저같은 문과생이 보기엔 모든 프로그램 언어가 낯서네요.ㅜㅜ 조금만 더 버텨 보겠습니다!!!