
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들이 묶인 것을 볼 수 있다.