Scala를 공부하면서 Scala는 고차함수를 이용하여 코드를 간결하게 할 수 있음을 체크했었다.
자주 사용되는 고차함수 메서드들을 정리하려고 한다.
고차함수(higher-order function)
함수를 인자로 받는 함수
많은 컬렉션들이 Iterable
을 상속 받고 있다. Iterable를 상속받으면 Iterator로 모든 원소들을 돌며 값들을 리턴시킬 수 있다. 대표적인 고차함수 메서드를 몇 가지 정리하려고 한다.
map
은 가장 기본적인 고차함수이다. map은 단순하게 인자로 받은 함수를 컬렉션 순회
하면서 각각 실행시키는 일을 한다.
기본적인 예제이다. map
에서 triple
을 인자로 받아 실행시키는 함수이다. 즉, 인자로 받은 메서드를 컬렉션 내 모든 원소에 대하여 실행시키는 일을 한다.
flatMap
은 flatten
이라는 메서드와 map
메서드가 함께 실행되는 효과를 가진 메서드이다.
✅ flatten
flatten은 내포 단계를 하나 줄여 내포된 리스트의 원소를 상위의 리스트로 옮겨주는 역할을 한다.
위와 같이 2차원 리스트였는데 내부 리스트의 원소를 상위의 리스트로 옮겨 1차원 리스트로 만들었다.
위와 같이 리스트 한 단계를 옮겨주는 역할을 한다.
zipWithIndex
는 메서드명처럼 리스트 내부의 값과 인덱스를 튜플로 묶어주는 역할을 하는 메서드이다.
groupBy
는 인자로 준 함수를 기준으로 묶는다. map
과 주로 사용한다.
여러 Map들이 있고, Map 안에 다양한 데이터들이 들어있다. 이때, 각 map에서 기준이 되는 인자를 설정해준다.
위의 예시의 경우 날짜를 기준으로 HashMap이 생성된 후, List로 해당하는 Map들이 묶인 것을 볼 수 있다.