Programming Guide/Dart

Dart 시작하기

발효홍삼 2023. 1. 5. 16:27
728x90

What is Dart?

Dart란 구글이 앱을 위해 디자인한 프로그래밍 언어로 크로스플랫폼 웹 프레임워크인 Flutter의 주력 언어이다.

Dart는 객체지향이면서 C언어와 유사한 문법을 가지고 있다. 또한 실행 중인 앱에 즉시 결과를 보여주는 hot reload를 사용해서 개발 생산성을 높일 수 있다. 그리고 AOT 컴파일로 네이티브 코드를 생성하기 때문에 모든 플랫폼에서 빠른 속도를 제공한다.

Quick Start

Dartpad는 공식적으로 제공되는 웹 에디터이다. 코드를 저장할 수는 없기 때문에 실제 개발용으로 사용하기엔 무리지만 간단한 로직 테스트로는 훌륭하다. 그러므로 이번 글에선 Dartpad를 사용하도록 하겠다.

https://dartpad.dartlang.org/ 

 

DartPad

 

dartpad.dartlang.org

 

Dart basic

Dart는 맨 처음 시작 시 main 함수부터 찾게 된다.

 

1) 주석

C와 Java 등과 동일하게 // 그리고 /* */을 사용한다.

void main() {
	// 한 줄 주석
    /*여러 줄 주석*/
}

2) 변수

int(정수형), double(실수형), string(문자열), bool(논리형), list(배열), set, map, runes, symbol, null을 기본적으로 지원한다.

또는 Javascript나 Python처럼 var을 사용해 선언해주는 것 또한 가능하다.

void main() {
  String name = "홍길동";
  int age = 25;
  double grade = 3.75;
  bool married = false;
  List<String> liked = ["잠자기","게임하기"];
  
  print("이름 : " + name.toString());
  print("나이 : " + age.toString());
  print("학점 : " + grade.toString());
  print("혼인 : " + married.toString());
  print("좋아하는것 : " + liked.toString());
}

3) 제어문

여타 언어의 제어문과 큰 차이점은 없다. if / else 문, 삼항 연산자, swith/case문, 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;
}

4) 함수

Dart는 완전한 객체지향 언어이며, 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 main() {
	int a = 10;
    int b = 5;
	
    print('${a+b} * ${a-b} = ${mul(add(a,b), sub(a,b)}}');
}

int add(int a,int b) {
	return a + b;
}

int sub(int a, int b) {
	return a - b;
}

int mul(int a,int b) {
	return a*b;
}

-이름 있는 선택 매개변수

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

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

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

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

-위치적 선택 매개변수

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

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

 

-익명 함수 및 람다

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

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

5) 클래스

class키워드를 통해 객체를 만들며 신규 생성 시 new 키워드를 이용한다. 상속은 extends 키워드를 사용한다.

728x90