Dart란?
Dart는 구글이 멀티 플랫폼 상에서 동작되도록 하는 앱을 위해 디자인된 프로그래밍 언어이다. 기본적으로 문법은 C 계열 언어와 유사하며 기존 언어보다 간결하고 강력한 기능을 지원한다. 보통 Dart라고 하면 Flutter를 통한 모바일 개발을 생각하는데 데스크톱, 서버, 웹 앱 용도로도 사용이 가능하다.
Dart를 공부하는 이유
일단 모바일 개발을 할 때 네이티브로 개발을 하게 되면 안드로이드와 ios 두 가지를 개발해야된다. 즉 똑같은 기능과 똑같은(완전 똑같지는 않겠지만) 화면을 두 번 개발을 하게 된다. 이는 시간적,경제적,인력적 낭비로 이어질 수 있다. 따라서 두 플랫폼 모두 동시 개발 가능한 Flutter를 위해 Dart 공부를 시작했다. 리액트 네이티브도 있지만 살짝 공부해봤을 때 서드 파티 라이브러리를 많이 알아야 해서 차라리 플러터를 먼저 공부해보는게 낫겠다고 생각했다.
DartPad
dartpad.dev
따로 설치하지않아도 해당링크를 타고 들어가면 Dart 언어를 실행 해볼 수 있다.
간단한 문법
main 함수
기본적으로 C언어와 무척 비슷하다. 일단 main 함수로부터 내가 적은 코드가 실행이 된다. 만약 main 함수가 없다면 바로 에러가 나버리게 된다. 콘솔 창에 출력을 하고 싶을 때는 print 함수를 사용하면 된다. 또 무조건 세미콜론을 찍어줘야 된다. 자바스크립트나 타입스크립트에서 처럼 세미콜론을 생략하면 바로 에러가 떠버린다
변수 선언
우선 변수 선언은 JS와 같이 var로 선언할 수 있다. 이렇게 선언된 변수는 값이 변경이 가능하지만 처음 넣은 값으로 타입이 유추 되기 때문에 타입을 맞추어주어야 한다. 자바처럼 명시적으로 타입 선언도 가능하다. 관습적으로 함수나 메소드 내부에서 지역 변수를 선언할 때에는 var을 사용하고 class에서 변수나 property를 선언할 때에는 타입을 명시적으로 선언한다. 만약 복합적인 상황이면 var을 쓰는걸 권장하는데 어차피 타입을 Dart에서 유추하기 때문이다. 타입을 명시하고 싶지 않다면 dynamic 타입으로 선언할 수 있는데 이건 타입이 정해지지 않고 유동적으로 값을 할당할 수 있다.
다이나믹은 위 방법대로도 선언이 가능하며 if 문에서 위 이미지처럼 조건을 걸 경우 저 블럭 안에서는 무조건 String으로 사용이 된다.
null safety
null safety는 말 그대로 개발자가 null 값을 참조할 수 없게 하는 것이다. 자바 같은 경우에는 null 값을 참조하게 되면 무조건 에러가 나게 되어 있는데 다트에서는 그 것을 막을 수 있다.
기본적으로 모든 변수는 non nullable이므로 null 값을 할당하고 싶다면 ?로 null이 올 수 있다는 것을 명시해야한다.
code?.함수() 식으로 단축함수로 사용할 수 있다.
final
한 번 정의된 변수를 수정할 수 없게 만드려면 final을 쓴다. final로 선언했는데 변수를 수정하려고 하면 바로 에러가 난다 자바스크립트의 const와 비슷하다.
late
late는 final이나 var 앞에 붙여줄 수 있는 수식어로 초기 데이터 없이 변수를 선언할 수 있도록 한다. 변수를 만드는데 값이 없는건데 이렇게 되면 api를 호출 후 값을 넣을 수 있다. data fetching 할 때 매우 유용하기 때문에 필요한 데이터를 내가 아직 모를 때 유용하다. 물론 만약 값이 없을 때 참조하려면 에러가 발생한다.
Dart에 대해 공부를 시작했는데 앞으로도 공부하면서 계속 포스팅해나갈 예정이다.
공부하면서 정리한 내용이기 때문에 틀린 부분이 있을 수 있습니다. 모든 지적 감사히 받겠습니다 :)
'프로그래밍 언어 > Dart' 카테고리의 다른 글
[Dart] 추상화 클래스와 상속, Mixin (0) | 2023.10.25 |
---|---|
[Dart] Cascade Notation (0) | 2023.10.25 |
[Dart] 클래스 - 클래스와 생성자 (2) | 2023.10.25 |
[Dart] 함수 (0) | 2023.02.26 |
[Dart] 자료형 (0) | 2023.02.22 |