
컬렉션 - 여러 값을 하나의 변수에 저장할 수 있는 타입.
ListMapSet여러 값을 순서대로 한 변수에 저장할 때 사용한다.
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로 알 수 있다.List에 값을 추가할 때 사용된다.
추가하고 싶은 값을 매개변수에 입력하면 된다.
void main() {
List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
// 리스트 끝에 추가된다.
snackList.add('먹태깡');
print(snackList);
}

List에 있는 값들을 순서대로 순회하며 조건에 맞는 값만 필터링하는 데 사용한다.
true를 반환하면 값 유지, false를 반환하면 값을 버린다.
void main() {
List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
final snacks = snackList.where(
(name) => name == "눈을감자" || name == '포카칩',
);
print(snacks);
print(snacks.toList());
}


.toList(): Iterable을 List로 다시 변환할 때 사용한다.List에 있는 값들을 순서대로 순회하며 값 변경이 가능하다.
반환하는 값이 현잿값을 대체하며 순회가 끝나면 Iterable이 반환된다.
void main() {
List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
final snacks = snackList.map(
(name) => '내가 좋아하는 $name',
);
print(snacks);
print(snacks.toList());
}

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

어떠한 타입이든 반환 가능하다.
void main() {
List<String> snackList = ['눈을감자', '스윙칩', '포카칩', '콘칲'];
final snacks = snackList.fold<int>(0, (value, element) => value + element.length);
print(snacks);
}
fold() 함수의 첫 번째 매개변수에 입력된 값이 초깃값으로 사용된다.

void main() {
Map<String, String> playlist = {
'DPR LIVE':'Jasmine',
'콜린':'orange',
'Gervs':'Another Day',
};
print(playlist['DPR LIVE']);
print(playlist['콜린']);
}

void main() {
Map<String, String> playlist = {
'DPR LIVE':'Jasmine',
'콜린':'orange',
'Gervs':'Another Day',
};
print(playlist.keys);
print(playlist.values);
}

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 Flavor {
strawberry,
watermelon,
grape,
}
void main() {
Flavor flavor = Flavor.strawberry;
print(flavor);
}
