1. List
설명은 print에 달린거 읽어보면 됨! ㅇ.<
void main() {
List<String> btob = ['이민혁', '프니엘', '이창섭', '서은광', '임현식', '육성재'];
print("$btob // 리스트 출력");
print("${btob[0]} // 인덱스 출력");
print("${btob.last} // first, last 사용가능");
print("${btob.length} // 길이 출력 가능");
print("");
btob[3] = '서리다';
print("$btob // 인덱스를 찾아 변경 가능");
btob.add('멜로디');
print("$btob // 배열의 마지막에 값 추가");
btob.remove(btob.last);
print("$btob // 배열의 마지막에 값 삭제");
print("");
var rapper = btob.where(
(name) => name == '이민혁'|| name == "프니엘"
); // 특정값 필터링
print("$rapper // 특정값 필터링 + iterable 자료형 출력");
print("${rapper.toList()} // iterable -> list 자료형으로 변경 출력");
print("");
var btobMember = btob.map(
(name) => '비투비 $name'
);
print("$btobMember // 배열을 순회하며 값에 간섭");
print("");
var btobString = btob.reduce((value, element) => value + ", " + element);
print("$btobString // reduce가 처음 시작될때 value가 첫번째 요소, element 가 두번째 요소임. 다음 순회할때 value는 reduce의 이전 순회값, element는 다음값임. 이런 식으로 점점 중첩됨 ");
print("");
var allMember = btob.fold<int>(0, (value, element) => value + element.length);
print("$allMember // reduce는 내부 리스트 타입이 같아야 하지만, fold는 타입이 달라도 반환이 가능하다. 예제에선 배열 내부가 string이라 reduce는 string 타입으로만 반환되어야 하지만, fold는 앞에 반환될 자료형(int)를 선언하고 초기값(0)을 설정한 뒤 각 요소의 길이를 더하도록 함.");
}
이의 결과값을 다음과 같다.
뒤에 달린 // 내용보고 매칭해서 공부하면 된다.
[이민혁, 프니엘, 이창섭, 서은광, 임현식, 육성재] // 리스트 출력
이민혁 // 인덱스 출력
육성재 // first, last 사용가능
6 // 길이 출력 가능
[이민혁, 프니엘, 이창섭, 서리다, 임현식, 육성재] // 인덱스를 찾아 변경 가능
[이민혁, 프니엘, 이창섭, 서리다, 임현식, 육성재, 멜로디] // 배열의 마지막에 값 추가
[이민혁, 프니엘, 이창섭, 서리다, 임현식, 육성재] // 배열의 마지막에 값 삭제
(이민혁, 프니엘) // 특정값 필터링 + iterable 자료형 출력
[이민혁, 프니엘] // iterable -> list 자료형으로 변경 출력
(비투비 이민혁, 비투비 프니엘, 비투비 이창섭, 비투비 서리다, 비투비 임현식, 비투비 육성재) // 배열을 순회하며 값에 간섭
이민혁, 프니엘, 이창섭, 서리다, 임현식, 육성재 // reduce가 처음 시작될때 value가 첫번째 요소, element 가 두번째 요소임. 다음 순회할때 value는 reduce의 이전 순회값, element는 다음값임. 이런 식으로 점점 중첩됨
18 // reduce는 내부 리스트 타입이 같아야 하지만, fold는 타입이 달라도 반환이 가능하다. 예제에선 배열 내부가 string이라 reduce는 string 타입으로만 반환되어야 하지만, fold는 앞에 반환될 자료형(int)를 선언하고 초기값(0)을 설정한 뒤 각 요소의 길이를 더하도록 함.
2. Map
Map.. Java랑 Kotlin이랑 똑같음 ,,
void main() {
Map<String, String> seoulTrans = {
'기차' : '서울역',
'버스' : '고속터미널',
'비행기' : '김포공항',
};
print("${seoulTrans['기차']} // key값으로 value를 찾을 수 있음.");
print("${seoulTrans.keys} // key list 반환");
print("${seoulTrans.values} // value list 반환");
}
서울역 // key값으로 value를 찾을 수 있음.
(기차, 버스, 비행기) // key list 반환
(서울역, 고속터미널, 김포공항) // value list 반환
3. Set
얘도.. 기존 언어랑 비슷.
void main() {
Set<String> delivery = {'햄버거', '떡볶이', '피자', '마라탕', '마라탕',};
print("$delivery // 겹치는 값은 저징되지 않음");
print("${delivery.contains('콘치즈')} // set 내부에 값 있는지 확인");
print("${delivery.toList()} // list 변환");
print("");
List<String> cafe = ['아메리카노', '카페라떼', '핫초코', '핫초코'];
print("$cafe // list는 중복을 허용함");
print("${Set.from(cafe)} // List -> Set 변경. 이 과정에서 중복 삭제");
}
{햄버거, 떡볶이, 피자, 마라탕} // 겹치는 값은 저징되지 않음
false // set 내부에 값 있는지 확인
[햄버거, 떡볶이, 피자, 마라탕] // list 변환
[아메리카노, 카페라떼, 핫초코, 핫초코] // list는 중복을 허용함
{아메리카노, 카페라떼, 핫초코} // List -> Set 변경. 이 과정에서 중복 삭제
4. enum
enum은 값을 여러 케이스로 제한해 두는 것이다. 실무로 들어가서 상태를 조작한다거나 할때 정말정말 편하다.
enum Status {
onCreate,
onStart,
onResume,
onPause,
onStop,
onDestroy
}
void main() {
var status = Status.onCreate;
print("$status // 다음과 같이 바로 골라쓸 수 있고 자동완성 됨.");
print("${Status.values} //enum에 존재하는 값 확인 가능");
}
Status.onCreate // 다음과 같이 바로 골라쓸 수 있고 자동완성 됨.
[Status.onCreate, Status.onStart, Status.onResume, Status.onPause, Status.onStop, Status.onDestroy] //enum에 존재하는 값 확인 가능
반응형
'Hybrid > Flutter' 카테고리의 다른 글
Flutter] 백버튼 이벤트 처리 (0) | 2024.07.04 |
---|---|
Dart] 1. 기초문법 (0) | 2024.06.13 |