TIL) Flutter - Dart 문법(컬렉션)

oatraspberry·2023년 9월 21일
post-thumbnail

🌼Dart 문법

컬렉션

컬렉션 - 여러 값을 하나의 변수에 저장할 수 있는 타입.

  • 여러 값을 순서대로 저장하는 List
  • 특정 키값을 기반으로 빠르게 값을 검색하는 Map
  • 중복된 데이터를 제거할 때 사용하는 Set

🌳List

여러 값을 순서대로 한 변수에 저장할 때 사용한다.

void main() {
  // List에 넣을 타입 <> 사이에 명시 가능
  List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
  
  print(snackList);
  print(snackList[0]);
  print(snackList[1]);
  print(snackList[2]);
  print(snackList[3]);
  
  print(snackList.length);
  
  // 3번 인덱스값 변경
  snackList[3] = '먹태깡';
  print(snackList);
}

  • 리스트의 길이는 .length로 알 수 있다.

📂add() 함수

List에 값을 추가할 때 사용된다.
추가하고 싶은 값을 매개변수에 입력하면 된다.

void main() {
  List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
  
  // 리스트 끝에 추가된다.
  snackList.add('먹태깡');
  
  print(snackList);
}

📂where() 함수

List에 있는 값들을 순서대로 순회하며 조건에 맞는 값만 필터링하는 데 사용한다.
true를 반환하면 값 유지, false를 반환하면 값을 버린다.

void main() {
  List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
  
  final snacks = snackList.where(
    (name) => name == "눈을감자" || name == '포카칩',
  );
  
  print(snacks);
  print(snacks.toList());
}


  • .toList(): Iterable을 List로 다시 변환할 때 사용한다.

📂map() 함수

List에 있는 값들을 순서대로 순회하며 값 변경이 가능하다.
반환하는 값이 현잿값을 대체하며 순회가 끝나면 Iterable이 반환된다.

void main() {
  List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
  
  final snacks = snackList.map(
    (name) => '내가 좋아하는 $name',
  );
  
  print(snacks);
  print(snacks.toList());
}

📂reduce() 함수

  • List에 있는 값들을 순회하며 매개변수에 입력된 함수를 실행한다.
  • 매개변수로 함수를 입력받고 해당 함수는 매개변수 2개를 입력받는다.
  • 순회할 때마다 리스트 내부의 값들이 추가되는 특징이 있다.
  • 함수가 실행되는 리스트 요소들의 타입이 같아야 한다.
void main() {
  List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
  
  final snacks = snackList.reduce((value, element) => value + ', ' + element + '!');
  
  print(snacks);
}

📂fold() 함수

어떠한 타입이든 반환 가능하다.

void main() {
  List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
  
  final snacks = snackList.fold<int>(0, (value, element) => value + element.length);
  
  print(snacks);
}

fold() 함수의 첫 번째 매개변수에 입력된 값이 초깃값으로 사용된다.

🌳Map

  • 키(key)와 값(value) 쌍으로 저장한다.
  • 키를 이용해서 원하는 값을 빠르게 찾는 장점이 있다.
void main() {
  Map<String, String> playlist = {
    'DPR LIVE':'Jasmine',
    '콜린':'orange',
    'Gervs':'Another Day',
  };
  
  print(playlist['DPR LIVE']);
  print(playlist['콜린']);
}

🤍키,값 반환

  • 모든 Map 타입은 키,값을 모두 반환받을 수 있다.
void main() {
  Map<String, String> playlist = {
    'DPR LIVE':'Jasmine',
    '콜린':'orange',
    'Gervs':'Another Day',
  };
  
  print(playlist.keys);
  print(playlist.values);
}

🌳Set

  • 중복 없는 값들의 집합이다.
  • 중복을 방지하여 유일성 보장받을 수 있다.
  • 중복으로 입력해도 출력은 한 번만 된다.
  • contains() 함수로 값의 유무를 확인할 수 있다.
void main() {
  Set<String> icecream = {'돼지바', '캔디바', '엑셀런트', '스크류바', '스크류바'};
  
  print(icecream);
  print(icecream.contains('돼지바'));
  
  // List 타입으로 변환
  print(icecream.toList());
  
  List<String> icecream2 = ['돼지바', '돼지바', '캔디바'];
  // List 타입을 Set 타입으로 변환
  print(Set.from(icecream2));
}

🌳enum

한 변수의 값을 몇 가지 옵션으로 제한하는 기능이다. 선택지가 제한적일 때 사용한다.

enum Flavor {
 strawberry,
 watermelon,
 grape,
}

void main() {
  Flavor flavor = Flavor.strawberry;
  print(flavor);
}

profile
개발자가 될테야

0개의 댓글