본문 바로가기

Kotlin

AtomicKotlin _ 5(42 ~ 49) 함수형 프로그래밍

break와 continue

  1. 루프 안에서만 break나 continue를 사용할 수 있다.

  2. continue는 루프의 시작 위치로만 점프할 수 있다.

  3. break는 루프의 끝으로만 점프할 수 있다.

  4. 단순한 break와 continue는 자신이 속한 루프의 범위보다 더 밖으로 점프할 수 없다.

  5. 레이블을 사용하면 맨 안쪽 루프의 영역에 제한되지 않고 점프할 수 있다.

  6. ‘레이블@’ 형태로 사용 가능

람다

  1. 람다는 이름이 없고, 함수 생성에 필요한 최소한의 코드만 필요, 다른 코드에 람다를 직접 삽입 가능

  2. 파라미터가 하나인 경우 코틀린은 자동으로 파라미터 이름을 it으로 만들어 줌

  3. 람다가 특정 인자를 사용하지 않는 경우 밑줄(_)을 사용하면 컴파일러 경고를 무시할 수 있다.

람다의 중요성

  1. filter()의 술어를 람다로 지정할 수 있다. ex. filter{ it > 2 }

  2. 람다를 var나 val에 담을 수 있다. 이렇게 하면 여러 함수에 같은 람다를 넘기면서 로직을 재사용 가능

  3. any() : 술어를 만족하는 원소가 List에 하나라도 있는지 검사하는 함수

  4. 자신의 영역 밖 요소를 참조할 수 있는 능력이 있음

  5. 함수가 자신이 속한 환경 요소를 포획(capture) 하거나 닫아버리는(close up) 것을 클로저(closure)라고 함

  6. 클로저가 없는 람다가 있을 수 있다, 람다가 없는 클로저도 있을 수 있다.

컬렉션에 대한 연산

  1. filter() : 술어가 true 를 반환하는 모든 원소가 들어 있는 새 리스트를 만든다.

  2. any() : 원소 중 어느 하나에 대해 술어가 true를 반환하면 true를 반환한다.

  3. all() : 모든 원소가 술어와 일치하는 검사한다.

  4. none() : 술어와 일치하는 원소가 하나도 없는지 검사한다.

  5. find(), firstOrNull() : 술어와 일치하는 첫 번째 원소를 반환한다. 원소가 없으면 find()는 예외를 던지고 findOrNull()은 null을 반환한다.

  6. lastOrNull() : 술어와 일치하는 마지막 원소를 반환한다. 원소가 없으면 null을 반환한다.

  7. coun() : 술어와 일치하는 원소의 개수를 반환한다.

  8. filterNot() : 술어와 일치하지 않는 그룹을 반환한다.

  9. partition() : 술어에 해당하는 그룹, 해당하지 않는 그룹 둘 다 반환한다. list가 들어있는 pair객체를 만든다.

  10. sortDescending() : 컬렉션을 내림차순으로 정렬

  11. minByOrNull() : 주어진 대 소 비교 기준에 따라 찾은 최솟값을 돌려준다. 리스트가 비어 있는 경우 null을 반환한다.

  12. take() : 첫 번째 원소를 반환한다.

  13. drop() : 첫 번째 원소를 제거한다.

  14. takeLast() : 마지막 원소를 반환한다.

  15. dropLast() : 마지막 원소를 제거한다.

  16. filter()와 map()을 Set에 적용하면 List를 반환한다.

멤버 참조

  1. 멤버 함수나 프로퍼티 이름 앞에 그들이 속한 클래스 이름과 2중 콜론 (::)을 위치시켜서 멤버 참조를 만들 수 있다. (ex. val unread = filterNot(Message::isRead))

  2. sortedWith() : 비교기(comparator)를 사용해 리스트를 정렬한다. (ex. messages.sortedWith(compareBy(Message::isRead , Message::sender)) : 읽지 않은 메세지가 보낸 사람 순서로 정렬된 리스트 , 그 후 읽은 메시지가 보낸 사람 순서로 정렬)

  3. 최상위 수준 함수에 대한 참조를 만들 때는 ::function 처럼 쓴다.

 

고차 함수

  1. 함수를 다른 함수의 인자로 넘길 수 있거나 함수가 반환 값으로 함수를 돌려줄 수 있다면, 고차 함수를 지원한다고 말한다.

 

리스트 조작하기

  1. zip() : 두 List의 원소를 하나씩 짝짓는 방식으로 묶는다 → Pair로 이뤄진 List가 생성된다.

  2. zipWithNext() : 어떤 원소와 그 원소에 인접한 다음 원소를 묶는다.

  3. flatten() : 각 원소가 list인 list를 인자로 받아서 원소가 따로따로 들어있는 list를 반환한다.

  4. 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