컬렉션(Collections)
- 여러 개의 값을 그룹으로 묶어 효율적으로 관리할 수 있는 친구
- List
- 순서가 있는 값들이 묶인 형태
- 배열이라고도 부름
- List<타입> 변수이름 = [요소];
- var 변수이름 = [];
- final(const) 변수이름 = [];
- var 변수이름 = <타입>[];
- 타입을 정해주지 않고 선언하면 요소들의 타입이 서로 달라도 됨
- index를 통해 요소에 접근. 첫 번째 요소의 index는 0
- length를 통해 요소의 개수를 구할 수 있음
- isEmpty를 통해 리스트에 요소가 없는지 알 수 있음. <=> isNotEmpty
- indexOf()를 통해 특정 요소의 index를 알 수 있음
- add(), addAll()을 통해 요소를 추가할 수 있음
- remove(), removeAt()을 통해 요소를 삭제할 수 있음
- clear()를 통해 모든 요소 삭제 가능
- Set
- 중복되지 않는 값들이 묶인 형태
- 수학의 집합과 비슷한 개념
- Set<타입> 변수이름 = {요소};
- var 변수이름 = { ... }; //요소를 넣지 않으면 Map타입으로 만들어진다.
- var 변수이름 = <타입>{};
- final(const) 변수이름 = { ... };
- 요소의 순서가 보장되지 않으므로, index 개념이 없다.
- 중복된 값은 하나를 제외하고 제거된다.
- length를 통해 요소의 개수를 구할 수 있음
- isEmpty를 통해 Set에 요소가 없는지 알 수 있음. <=> isNotEmpty
- add(), addAll()을 통해 요소를 추가할 수 있음
- remove()를 통해 요소 삭제 가능
- contains(), containsAll()을 통해 특정 요소가 있는지 확인 가능
- Map
- 키(Key)와 값(Value)이 묶인 하나의 쌍으로 이루어진 형태
- Map<key 타입, value 타입> 변수이름 = {key : value};
- var 변수이름 = {};
- final(const) 변수이름 = {};
- 키들과 값들은 각각 타입이 같아야 한다.
- 키와 값은 서로 다른 타입 가능
- 키는 중복될 수 없고, 값은 중복 가능
- length를 통해 요소의 개수를 구할 수 있음
- isEmpty를 통해 Set에 요소가 없는지 알 수 있음. <=> isNotEmpty
- 변수이름[key이름]을 통해 값을 검색할 수 있다.
- 변수이름[key이름] = 값;을 통해 기존 키의 값을 수정하거나 새로운 쌍을 추가할 수 있다.
- remove()를 통해 요소를 삭제할 수 있다.
- containsKey()를 통해 특정 요소가 있는지 알 수 있다.
- keys를 통해 모든 키들을 알 수 있다.
- values를 통해 모든 값들을 알 수 있다.
열거형(Enumerations)
- 여러 개의 상수 값을 묶은 형태
- enum 열거형이름 {요소}
- 중괄호 속 요소들을 한 줄에 나열하거나 여러 줄에 나열할 수 있다.
- 열거형 이름을 통해 열거형에 포함된 값에 접근 가능
- switch문을 통해 열거형에 포함된 값 각각을 다룰 수 있다.
- index를 통해 열거형에 포함되니 값이 몇 번째에 있는지 알 수 있다.
- values를 통해 열거형에 포함된 값들을 알 수 있다.
- name을 통해 열거형에 포함된 값의 이름을 알 수 있다.
- 연관된 상수들의 집합을 정의할 때 사용
- 중복 값을 넣으면 오류가 발생(Set은 오류 발생 안함)
- 처음 정의된 상태에서 값 추가 또는 제거 불가
- 요소들 사이에 순서 존재
함수(Function)
- 특정 작업을 수행하는 코드 블록
- 입력을 받아서 특정 작업을 수행하고, 그 작업에 대한 결과를 반환하는 코드 블록
- 구성요소
- 반환 타입
- 함수가 반환하는 값의 데이터 타입
- 함수가 값을 반환하지 않는 경우에는 void로 선언
- 함수 이름
- 함수의 이름. 함수를 실행(호출)시킬 때 사용
- 매개변수
- 함수 내부로 전달되어 코드 블록에서 사용하는 값
- 1개 이상 가질 수 있고, 개수에 제한이 없음
- 실행할 코드
- 반환값
- 함수의 코드 블록이 실행된 후 반환하는 값
- 결과값
- 반환타입 함수이름(매개변수타입 매개변수이름) {return 반환값;}
- 반환타입 함수이름(매개변수타입 매개변수이름) => 반환값;
- 화살표 함수. 반환값이 하나의 표현식으로 나타낼 수 있는 경우 사용 가능
- 함수 이름을 통해 호출
- void main() { ... }
- 모든 프로그램은 실행을 시작하기 위한 함수(최상위 함수)를 반드시 가져야 하는데, Dart에서는 main()함수가 그러하다.
- main()함수의 코드 블록 안에 코드를 넣어야 실행됨
- 반환값이 없으므로 반환 타입은 void로 설정
- 프로그램의 함수들은 미리 만들고, 호출을 통해 main()함수를 간결하게 만든다.
제네릭(Generics)
- 클래스나 함수에서 데이터 타입을 일반화하여 다양한 타입을 지원할 수 있게 하는 기능
- 제네릭 함수, 제네릭 클래스 두 가지 개념 존재
- 제네릭 함수
- 타입파라미터 함수이름<타입파라미터>(매개변수) { ... }
- 타입 파라미터는 보통 영어 대문자 한 글자(ex. E, T, S, K, V)로 표현
- 특정 타입에 의존하지 않고, 여러 타입에 대해 동일한 코드를 적용할 수 있어 재사용성 높은 코드를 짤 수 있다.