본문 바로가기
App/Dart

Dart 간단히 알아보기

by Day0404 2021. 4. 19.
728x90
반응형

flutter라는 크로스 플랫폼 프레임워크로 앱을 만들기 위해, 그전에 필요한 dart라는 언어에 대해 공부하려고 한다.

dart란?

위키백과에서는 아래와 같이 정의되어 있다.

다트(Dart)는 구글이 개발한 웹 프로그래밍 언어이다. 이는 2011년 10월 10일~12일까지 열렸던 "GOTO 컨퍼런스" 에서 공개되었다. 다트는 자바스크립트를 대체할만한 오픈 웹 플랫폼으로서 웹 개발언어를 목표로 개발된다고 밝혔다.

2018년도에는 배울필요가 없는 프로그래밍 언어 1위로 선정되는 치욕이 있었지만, 현재는 많이 올라왔다고 한다.

그리고 나는 flutter로 앱을 만들 생각이기 때문에 dart를 선행해야 한다.

객체지향 언어이기 때문에 Java를 공부했던 나에게는 러닝 커브도 많이 높을 것 같다고 생각되지 않아서 더욱 선택하게 되었다. (물론 어려움점이 많겠지만..상대적으로..ㅎㅎ)

또한 hot-reload가 된다는 점도 좋은 점이었다.

 

dart공식 홈페이지에는 특징으로 3가지를 소개하고 있다.

  • Optimized for UI  (UI에 최적화)
  • Productive development (생산적인 개발)
  • Fast on all platforms (모든 플랫폼에서 빠른 점)

그렇지만 진정한 특징은 내가 사용해보고 직접 느껴보고 다시 정리해서 포스팅하는 게 맞는 것 같다.

 

 

dart는 맨 처음 시작 시 main function부터 찾게 된다.

void main() {
  print('Hello, World!');
}

Variables

JavaScript처럼 변수에 데이터 타입을 지정해주지 않아도 저장된 데이터에 따라 타입이 지정이 된다.

다만, 공식문서에서도 데이터 타입을 지정하여 사용하는 것을 보니 그렇게 사용하도록 해야겠다.

var name = 'Voyager I';
var year = 1977;
var antennaDiameter = 3.7;
var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
var image = {
  'tags': ['saturn'],
  'url': '//path/to/saturn.jpg'
};

Control flow statements

직역하면 제어 흐름 문인데 우리가 흔히 알고 있는 if, for, while 등의 제어문으로 생각하면 될 것 같다.

문법적으로는 다른 여타 언어의 제어문과 크게 차이가 있지는 않는 것 같다.

if (year >= 2001) {
  print('21st century');
} else if (year >= 1901) {
  print('20th century');
}

for (var object in flybyObjects) {
  print(object);
}

for (int month = 1; month <= 12; month++) {
  print(month);
}

while (year < 2016) {
  year += 1;
}

Functions

dart는 완전한 객체지향 언어이며, 다트에서 모든 것이 객체이기 때문에 함수 또한 객체이다. 

변수가 함수를 참조할 수 있고, 함수의 인자로 함수를 전달받을 수 있다.

int fibonacci(int n) {
  if (n == 0 || n == 1) return n;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

var result = fibonacci(20);

 

dart에서 함수의 특징은 아래와 같다.

  • 변수가 함수 참조 가능
  • 다른 함수의 인자로 함수 전달 가능
  • 이름 있는 선택 매개변수
  • 위치적 선택 매개변수
  • 익명 함수 및 람다 

변수가 함수 참조 가능 예제

void main() {
    var name = getName();
    print('name == $name');
}

getName() {
    return 'name';
}

 

 

다른 함수의 인자로 함수 전달 가능 예제

mul() 함수 첫 번째 매개변수에 add(), 두 번째 매개변수에 sub()를 넘겨주었다.

결과

이름 있는 선택 매개변수 예제

매개변수명으로 인자 값을 넘겨줄 매개변수는 {}로 감싸줘야 한다. 

만약 {}로 감싸지 않은 필수 매개변수는 누락하면 오류가 생긴다.

void printPerson({String name = '철수', int age = 10}) {
  print('$name은 $age살입니다.');
}

void main() {
  printPerson(name: '영희', age: 20);
  printPerson(name: '영희');
  printPerson(age: 20);
  printPerson();
}

 

위지적 선택 매개변수 예제

위 이름 있는 선택 매개변수와 거의 비슷하다.

다만 []로 감싸주는 차이이며, name 변수 위치에 age를 넣는 등 위치에 맞지 않는 매개변수를 넘겨주면 오류가 생긴다.

void printPerson([String name = '철수', int age = 10]) {
  print('$name은 $age살입니다.');
}

void main() {
  printPerson('영희', 20);
  printPerson('영희');
  printPerson();
}

익명 함수 및 람다

// 익명함수
(매개변수명) {표현식;};
(a,b) {a+b;};

// 람다
(매개변수명) => 표현식;
(a,b) => a -b;

 

일단은 이정도로 간단하게 알아보았고, 더 자세히 공부하면서 차차 포스팅을 해야겠다.

Nuxt.js를 공부할 땐 자료가 많이 부족하여 힘들었는데, dart는 그래도 꽤 많은 자료가 있어서 다행이다.

기본적으로는 Java와 문법이 유사하여 나름 접근하는데 아직까지 큰 어려움은 없었다.

이제 겉핥기로 알아봤기 때문에 좀 더 자세히 알아보면서 공부했던 내용을 적어나가야 할 것 같다.

 

 

반응형

'App > Dart' 카테고리의 다른 글

Dart 언어 JavaScript와 다른 점  (0) 2021.04.20

댓글