selfstarter

Dart 기본 문법 정리(Dart Basic Grammar) 본문

App/Android

Dart 기본 문법 정리(Dart Basic Grammar)

selfstarter 2020. 6. 27. 19:18

Dart 기본 문법 정리(Summary Dart Basic Grammar)

Dart official site
Dart Site의 공식 테스트 코드를 기반으로 Dart 문법을 정리하였다

Dart는 구글이 공식 개발하고 있는 Fluflutter의 기본 언어이다

언어가 Java와 유사하여 러닝커브가 높다

Variable

Dart 언어로 만들어진 프로그램은 코드 시작을 main 함수에서부터 시작한다
변수는 var로 선언해도 되고 구체적인 데이터형으로 선언해도 된다(왠만해선 구체적인 데이터형으로 선언할 것)
$변수를 붙여서 변수 내용을 출력할 수 있다
String 데이터형을 사용할 때 + 플러스 기호로 여러 문자열을 순서대로 출력할 수 있다
''' 을 이용하여 개행을 그대로 보여줄 수 있다('''을 사용하지 않을 경우 Enter World는 개행되지 않고 출력된다)

main() {
  var front = "Self";
  String back = "Start";
  print('self starter');
  print('$front $back');
  print('hello' + 'world');
  print('''Enter
        World''');

}

Funtions

함수는 일반적으로 사용법이 거의 비슷하지만 몇가지 다른 특징이 있다
함수에 함수를 인자로 전달할 수 있다. 함수의 데이터타입?은 Function이다
함수가 한줄짜리로 간단하다면 람다식처럼 함수를 작성할 수 있다. functionName() => /return value/
함수의 결과값을 출력하고 싶을 때는 ${}를 사용한다. 변수와 다르게 괄호를 작성해야 한다

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

int addValueWithFunction(int value, Function f) {
  return f(value, value);
}

int minusValue(int a, int b) => a-b;
int minusValueWithFunction(int a, Function f) => f(a, a);

main() {
  print("2+5=${addValue(2, 5)}");
  print(addValueWithFunction(10, addValue));
  print("4-3=${minusValue(4, 3)}");
  print(minusValueWithFunction(20, minusValue));
}

Collection Iterator

Collection은 Array, Map, Set이 있다.
Array는 말그대로 어떤 데이터형을 차례대로 저장하는 Collection이고
Map은 key와 value로 이루어져 있다
Set은 중복되는 값을 쓸 수 없고 Array처럼 index를 사용하지 않는다

var numbers = [4, 8, 15, 16, 23, 42];

var mapValues = {
  'Korea': 'Korean',
  'USA': 'English',
  'Japen': 'Japness',
};

var setValues = {
  'Cat',
  'Dog',
  'Mouse',
};

main() {
  print(numbers.last);
  numbers.addAll([100,102]);
  print(numbers); 
  print(numbers[4]);
  print(mapValues['USA']);
  print(setValues.difference({'Cat'}));
  print(setValues.difference({'Wolf'}));
}

[]괄호는 Array를 나타내고 {}는 Map을 나타낸다
Array에 값을 추가하려면 add, 지우려면 remove 함수 호출(remove의 인자는 index이다)

main() {
  // 10까지의 값 생성
  var values = List.generate(10, (i) => i);
  print(values);

  var arrays = <int>[];
  for (int i = 0; i < 10; ++i) {
      arrays.add(i * 2);
   }
  arrays.remove(0);
  print("Arrays:${arrays}");
}

Classes

class 생성 시 new 키워드를 사용하지 않아도 된다
접근권한을 붙히지 않는다
생성자 옆에 : member변수 이름 = '값' 을 작성해서 기본 인자를 설정할 수 있다.

abstract class Account {
  bool login();
}

class User implements Account {
  String id;
  User() : id = 'noId';
  bool login() {
    return true;
  }
}

class StoppingUser extends User {
  bool login() {
    return false;  
  }
}

main() {
  User user = User();
  StoppingUser stoppingUser = StoppingUser();
  print("user login:${user.login()}");
  print("user login:${stoppingUser.login()}");  
  print(user.id);
}

공식문서 예제 중에 class에 괄호<>를 사용하는 것은 List처럼 class가 <>안의 type을 여러개 관리하겠다는 의미이다
그래서 class 선언 시 class이름 옆에 <>괄호를 붙히고 그 안에 관리할 type의 이름을 넣어줘야 한다
(어떤 객체가 들어올지모르므로 그것을 임시로 T라고 class내에서 사용하겠다는 의미이다)

class Chest<T> implements Item {

또 List처럼 관리하기 때문에 멤버변수로 List를 반드시 선언해줘야 한다

List<T> contents;

class 생성 시 사용법

var chest = Chest<Item>([
    DiamondSword(),
    Sword(),
  ]);

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

Flutter 기본사항 정리  (0) 2020.06.29
Flutter SDK, Android, VSCode 설치  (0) 2020.06.29
How to make Simple CustomDialog in Android  (0) 2020.06.27
constraintlayout weight  (0) 2020.06.20
Android drawable image에서 bitmap으로 변환  (0) 2020.06.15
Comments