Dart 시작하기 - 구조 및 변수

2022. 6. 21. 17:00DEV/Dart

반응형

Flutter를 시작하기 전에 Dart를 먼저 배워보자.

Web IDE - DartPad

IDE 설치는 일단 놔두고 웹에서 간단하게 테스트해보자.

DartPad

기본 구조

  • dart는 기본적으로 main 함수에서 시작한다.
  • 코드 종료 시 ;(세미콜론)을 필수로 붙여준다.
main() {
    print('Hello');
}

Variable (변수)

var

  • 타입을 설정할 필요 없음
  • 선언할 때의 값의 타입으로 설정됨
  • 선택권이 있는 경우 타입을 명시해주는 것이 가독성을 높여 공동 작업에 용이하게 하자 -> String, int, double, List, Map, enum
  • 변수의 타입이 매우 복잡한 경우 var 타입으로 간단하게 명시하기도 한다 eg. Map<int, Map<String, List>>
void main() {
  var name = 'Dart';
  print(name.runtimeType);  // => String : 값의 타입으로 결정됨

  Map<String, Map<int, List<String>>> complexType = {};
  var complexType = {}; // 간단하게 선언해버리기
}

dynamic Variable

  • 모든 타입의 값 대입 가능
  • 타입 변경 가능
  • var 타입 변수 선언 시 값을 지정하지 않으면 dynamic 변수처럼 여러 타입의 값 대입 가능
void main() {
  // var
  var name = 'Dart';
  name = 1; // => 🚫 A value of type 'int' can't be assigned to a variable of type 'String'.

  // dynamic
  dynamic test = 'Test';
  test = 1;
  print(test);  // => 1
  print(test.runtimeType);  // => int : 값의 타입으로 설정됨

  // var -> dynamic
  var text;
  text = 1;
  text = 'var';
  print(text);  // => var
  print(text.runtimeType);  // => String : 값의 타입으로 설정됨
}

String

  void main() {
  // 문자 타입 String
  String name = 'Dart';
  String name2 = 'Flutter';

  // 문자 연결
  print(name + ' & ' + name2);  // => Dart & Flutter

  // 변수 사용
  print('${name}의 타입은 ${name.runtimeType}이다'); // => Dart의 타입은 String이다
  // 간단한 변수의 경우만 {} 생략 가능
  print('$name의 타입은 $name.runtimeType 이다'); // => Dart의 타입은 Dart.runtimeType 이다
}

List

void main() {
  List btsList = ['진', '슈가', '제이홈', '알엠', '지민', '뷔', '정국'];
  print(btsList);

  List<String> blackpinkList = ['지수', '제니', '로제', '리사'];
  print(blackpinkList[0]);
  print(blackpinkList.length);
}

=>
[진, 슈가, 제이홈, 알엠, 지민, 뷔, 정국]
지수
4

Map

void main() {
  Map dict = {
    'Harry Potter':'해리 포터',
    'Ron Weasley':'론 위즐리'
  };

  Map<String, String> dict2 = {
    'Harry Potter':'해리 포터',
    'Ron Weasley':'론 위즐리'
  };

  print(dict);
  print(dict2);

  // 항목 추가
  dict.addAll({
    'Herminoe Granger':'헤르미온느'
  });
  print(dict);

  // 수정
  dict['Herminoe Granger'] = '헤르미온느 그레인저';
  print(dict);

  // 삭제
  dict.remove('Ron Weasley');
  print(dict);

  // 키, 값 리스트로 출력
  print(dict.keys.toList());
  print(dict.values.toList());
}

=>
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리} // dict
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리} // dict2
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리, Herminoe Granger: 헤르미온느}  // added
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리, Herminoe Granger: 헤르미온느 그레인저} // modified
{Harry Potter: 해리 포터, Herminoe Granger: 헤르미온느 그레인저} // removed
[Harry Potter, Herminoe Granger] // key list
[해리 포터, 헤르미온느 그레인저] // value list

enum

enum Status { approved, rejected, pending }

void main() {
  Status status = Status.approved;

  switch (status) {
    case Status.approved:
      print('Approved!');
      break;

    case Status.rejected:
      print('Rejected!');
      break;

    case Status.pending:
      print('Pending~');
      break;

    default:
      print('Not Mathced');
      break;
  }
}
=>
Approved!

Immutable Variable

final vs const

final 또는 const로 변수 선언 시 변수의 값을 변경할 수 없다.

  • final : run time에 값이 정해진다.
  • const : build time에 값을 알고 있어야 한다.
void main(){
  // Immutable
  final name = 'Dart';
  const name2 = 'Flutter';
  name = 'new dart'; // => The final variable 'name' can only be set once.
  name2 = 'new flutter'; // => Constant variables can't be assigned a value.

  // DateTime
  final now = DateTime.now();
  const now2 = DateTime.now(); // The constructor being called isn't a const constructor.
}
반응형

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

Dart Async programming - Stream  (0) 2022.06.24
Dart Async programing - Future, await  (0) 2022.06.23
Dart의 형변환 - List, Map, Set  (0) 2022.06.22
Dart의 함수를 알아보자  (0) 2022.06.22
Dart - Null safety & Dart Codelab Exercise  (0) 2022.06.21