[Dart] 2. Data Types

Speedwell🍀·2023년 9월 7일
0
post-thumbnail

[출처] Nomadcoders - Dart 시작하기

Basic Data Types

String, bool, int, double, num

  • num은 int, double의 부모 클래스 ⇒ 데이터에 정수, 소수 둘 다 대입 가능

Dart는 진정한 객체지향언어로 불림

Dart의 function을 포함해 거의 모든 게 object로 이루어져 있기 때문

String, bool, int, double, num 같은 data type들도 class로 이루어져 있기 때문에 실제로 자료형 안에 어떤 게 들어있는지 볼 수 있음


String Interpolation

text에 변수를 추가하는 방법

  1. 변수가 이미 존재할 때 ⇒ $변수명
void main() {
  var name = 'atlns';
  var greeting = 'Hello everyone, my name is $name, nice to meet you!';
  print(greeting);
}
  1. 계산을 실행할 때 ⇒ ${변수명을 포함한 계산 내용}
void main() {
  var name = 'atlns';
  var age = 4;
  var greeting = 'Hello everyone, my name is $name and I\'m ${age + 2}!';
  print(greeting);
}

Lists

Flutter에서 자주 쓰임

void main() {
  var numbers = [
    1,
    2,
    3,
    4,
  ];
  List<int> numbers2 = [
    1,
    2,
    3,
    4,
  ];
  numbers.add(1);
  numbers.first;
}

VS Code나 DartPad 사용한다면 list 끝을 쉼표로 만들어주기! ⇒ 자동으로 여러 줄로 포매팅됨


Dart에서 List의 장점은 collection ifcollection for를 지원한다는 것

  • UI 인터페이스 만들 때, 이 두 기능은 게임체인저!
    • 특히 collection if 많이 쓰임
      • 메뉴나 navigation bar를 만들 때 유저가 로그인 했는지 안했는지 나타내는 버튼을 만들고 싶다면 collection if 사용

Collection if

[collection if 사용 안하는 경우]

var giveMeFive = true;
var numbers = [
    1,
    2,
    3,
    4,
  ];
if (giveMeFive) {
	numbers.add(5);
}

[collection if 사용한 경우]

var giveMeFive = true;
var numbers = [
    1,
    2,
    3,
    4,
		if (giveMeFive) 5, // collection if
  ];

Collection for

void main() {
  var oldFriends = [
    'cat',
    'dog',
  ];
  var newFriends = [
    'hams',
    'sanrio',
    'mario',
    for (var friend in oldFriends) "🥰 $friend"
  ];
  print(newFriends);
}

Maps

JS나 TS의 object, Python의 dictionary와 유사

void main() {
  var player = { // 자료형 Map<String, Object> => key는 String, value는 Object(any 타입)
    'name': 'atlns',
    'xp': 12.34,
    'superpower': true,
  };
}

List와 Map을 활용해서 아래와 같이 작성할 수도 있음

  • 하지만 TS/JS의 object나 Python의 dict를 만드는 방식으로 작성한다면, Map을 많이 사용하는 이 방법은 비추천 ⇒ class를 사용하는 게 더 좋음

    key와 value를 가지는 구조로 object 만들고 이 친구들이 특정 형태를 가질 때, class를 사용하자!
    (API에서 얻은 데이터)

void main() {
  List<Map<String, Object>> players = [
    {
      'name': 'atlns',
      'xp': 12.34,
      'superpower': true,
    },
    {
      'name': 'hams',
      'xp': 10.23,
      'superpower': true,
    },
    {
      'name': 'cat',
      'xp': 35.20,
      'superpower': false,
    },
  ];
  print(players);
}

Sets

모든 요소가 유니크해야 하고, sequence(순서)가 있음

Dart에서 List = Python의 List

Dart에서 Set = Python의 Tuple

void main() {
  var numbers = {1, 2, 3, 4}; // Set<int>
  numbers.add(1);
  numbers.add(1);
  numbers.add(1);
  print(numbers); // {1, 2, 3, 4}
}

0개의 댓글