주요 내용으로 건너뛰기

Dart의 주요 컨셉

Flutter 시작 전 몸풀기


작년부터 Flutter가 나름 핫하길래 일단 지켜보고 있었는데, 실제 프로덕션 레벨에서 사용할 수 있을지 확인해보기로 결정이 나서 우선 몸풀기로 Dart 언어에 대해서 먼저 좀 알아보기로 했다. Java를 사용할 줄 안다면 구글에서 제공하는 코드랩(Introduction to Dart for Java Developers)이 있으니 한번 확인해보시길...

각설하고, 요즘 뭔가를 새로 배울 때 좀 더 신경쓰려고 노력하는 것이라고 한다면 해당 '뭔가'의 가장 베이스가 되는 기조?이다. 이걸 제대로 짚지 않고 시작했다가는 엉뚱한 곳에서 발목이 잡히는 경우가 많기 때문이다. 여튼 그래서 Dart 공식 사이트의 'A Tour of the Dart Language' 문서의 'Important concepts'를 대강 의역해보았다.

  • 변수에 할당하는 모든 것은 객체(object)이며, 모든 객체는 클래스의 인스턴스이다. 또한 숫자와 함수, null 역시 객체이다. 모든 객체는 Object 클래스를 상속한다.
  • Dart는 타입 추론을 할 수 있기 때문에 타입을 강제하는 언어이면서도 타입 표기가 생략 가능하다. 만약 타입이 지정되지 않음을 명시적으로 표기하고 싶다면 'dynamic' 타입을 표기하면 된다.
  • Dart는 generic을 지원한다. 'List<int>'나 'List<dynamic>'와 같이 표현된다.
  • Dart는 클래스나 객체에 선언되는 것 말고도(각각 static, instance 함수를 말한다) 최상위 레벨(top-level) 함수를 지원한다. 뿐만 아니라 함수 내부에 (중첩 함수 혹은 지역 함수로) 함수를 생성할 수 있다.
  • 위와 비슷하게 클래스나 객체 내에서 선언되는 static, instance 변수처럼 최상위 레벨 변수 역시 지원한다. instance 변수는 field나 property로도 불린다.
  • Java와 달리 Dart는 public, protected, private과 같은 예약어가 없다. 식별자(identifier)가 밑줄(_)로 시작하면 해당 라이브러리에서 private으로 선언된다.
  • 식별자는 밑줄이나 글자로 시작할수 있고, 그 이후로는 숫자를 함께 사용할 수 있다.
  • Dart는 expressions(런타임 값을 지님)와 statements(런타임 값이 없음)을 지닙니다. 예를 들어, conditional expression 'condition ? expr1 : expr2'는 expr1과 expr2의 값을 지닙니다. 반면 if-else statement는 값을 가지지 않습니다. statements는 하나 혹은 그 이상의 expressions를 포함하지만, expressions는 statement를 직접(곧바로?) 포함할 수 없습니다.
  • Dart tools는 두 종류의 오류 보고를 합니다: warning과 error입니다. warning은 코드가 작동하지 않을 수 있음을 알려주지만 프로그램이 실행되는 것 자체를 막진는 않습니다. error는 compile-time과 run-time으로 나뉘는데, compile-time은 프로그램의 실행 자체를 막습니다. run-time은 코드 실행중에 exception으로 결과값을 도출합니다.

(당연한 얘기겠지만) Java랑 비슷하면서도 다른 점이 느껴진다. 여기저기서 들리는 얘기에 의하면 리액티브 프로그래밍에 적합한 언어라고 하는데...실제로 그런지는 실제로 뭘 만들어봐야 알 것 같다.

GAE BAL JA

구본욱 님의 창작활동을 응원하고 싶으세요?

댓글

SNS 계정으로 간편하게 로그인하고 댓글을 남겨주세요.
#15
macOS에서 ssh passphrase 저장하기
#17
[Android] 유닛테스트 작성시 RxJava Scheduler 처리