break와 continue
- 루프 안에서만 break나 continue를 사용할 수 있다.
- continue는 루프의 시작 위치로만 점프할 수 있다.
- break는 루프의 끝으로만 점프할 수 있다.
- 단순한 break와 continue는 자신이 속한 루프의 범위보다 더 밖으로 점프할 수 없다.
- 레이블을 사용하면 맨 안쪽 루프의 영역에 제한되지 않고 점프할 수 있다.
- ‘레이블@’ 형태로 사용 가능
람다
- 람다는 이름이 없고, 함수 생성에 필요한 최소한의 코드만 필요, 다른 코드에 람다를 직접 삽입 가능
- 파라미터가 하나인 경우 코틀린은 자동으로 파라미터 이름을 it으로 만들어 줌
- 람다가 특정 인자를 사용하지 않는 경우 밑줄(_)을 사용하면 컴파일러 경고를 무시할 수 있다.
람다의 중요성
- filter()의 술어를 람다로 지정할 수 있다. ex. filter{ it > 2 }
- 람다를 var나 val에 담을 수 있다. 이렇게 하면 여러 함수에 같은 람다를 넘기면서 로직을 재사용 가능
- any() : 술어를 만족하는 원소가 List에 하나라도 있는지 검사하는 함수
- 자신의 영역 밖 요소를 참조할 수 있는 능력이 있음
- 함수가 자신이 속한 환경 요소를 포획(capture) 하거나 닫아버리는(close up) 것을 클로저(closure)라고 함
- 클로저가 없는 람다가 있을 수 있다, 람다가 없는 클로저도 있을 수 있다.
컬렉션에 대한 연산
- filter() : 술어가 true 를 반환하는 모든 원소가 들어 있는 새 리스트를 만든다.
- any() : 원소 중 어느 하나에 대해 술어가 true를 반환하면 true를 반환한다.
- all() : 모든 원소가 술어와 일치하는 검사한다.
- none() : 술어와 일치하는 원소가 하나도 없는지 검사한다.
- find(), firstOrNull() : 술어와 일치하는 첫 번째 원소를 반환한다. 원소가 없으면 find()는 예외를 던지고 findOrNull()은 null을 반환한다.
- lastOrNull() : 술어와 일치하는 마지막 원소를 반환한다. 원소가 없으면 null을 반환한다.
- coun() : 술어와 일치하는 원소의 개수를 반환한다.
- filterNot() : 술어와 일치하지 않는 그룹을 반환한다.
- partition() : 술어에 해당하는 그룹, 해당하지 않는 그룹 둘 다 반환한다. list가 들어있는 pair객체를 만든다.
- sortDescending() : 컬렉션을 내림차순으로 정렬
- minByOrNull() : 주어진 대 소 비교 기준에 따라 찾은 최솟값을 돌려준다. 리스트가 비어 있는 경우 null을 반환한다.
- take() : 첫 번째 원소를 반환한다.
- drop() : 첫 번째 원소를 제거한다.
- takeLast() : 마지막 원소를 반환한다.
- dropLast() : 마지막 원소를 제거한다.
- filter()와 map()을 Set에 적용하면 List를 반환한다.
멤버 참조
- 멤버 함수나 프로퍼티 이름 앞에 그들이 속한 클래스 이름과 2중 콜론 (::)을 위치시켜서 멤버 참조를 만들 수 있다. (ex. val unread = filterNot(Message::isRead))
- sortedWith() : 비교기(comparator)를 사용해 리스트를 정렬한다. (ex. messages.sortedWith(compareBy(Message::isRead , Message::sender)) : 읽지 않은 메세지가 보낸 사람 순서로 정렬된 리스트 , 그 후 읽은 메시지가 보낸 사람 순서로 정렬)
- 최상위 수준 함수에 대한 참조를 만들 때는 ::function 처럼 쓴다.
고차 함수
- 함수를 다른 함수의 인자로 넘길 수 있거나 함수가 반환 값으로 함수를 돌려줄 수 있다면, 고차 함수를 지원한다고 말한다.
리스트 조작하기
- zip() : 두 List의 원소를 하나씩 짝짓는 방식으로 묶는다 → Pair로 이뤄진 List가 생성된다.
- zipWithNext() : 어떤 원소와 그 원소에 인접한 다음 원소를 묶는다.
- flatten() : 각 원소가 list인 list를 인자로 받아서 원소가 따로따로 들어있는 list를 반환한다.
- flatMap() : map()과 flatten()을 모두 수행해준다.
'Kotlin' 카테고리의 다른 글
AtomicKotlin _ 4(30 ~ 41) 사용성 (0) | 2023.06.30 |
---|---|
AtomicKotlin _ 3(24 ~ 29) 객체 소개 (0) | 2023.06.26 |
AtomicKotlin _ 2(16 ~ 23) 객체 소개 (0) | 2023.06.26 |
AtomicKotlin _ 1.프로그래밍 기초 (0) | 2023.06.19 |