고차함수(Higher-order function)는 '다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수'를 뜻합니다.
스위프트의 함수(클로저)는 일급시민이기 때문에 함수의 전달인자로 전달할 수 있으며, 함수의 결과값으로 반환할 수 있습니다.
이번 시간에는 스위프트 표준라이브러리에서 제공하는 유용한 고차함수에 대해 알아봅니다.
map
filter
reduce
map
, filter
, reduce
함수는 스위프트 표준 라이브러리의 컨테이너 타입(Array
, Set
, Dictionary
등)에 구현되어 있습니다.
map
map
함수는 컨테이너 내부의 기존 데이터를 변형(transform)하여 새로운 컨테이너를 생성합니다.
filter
filter
함수는 컨테이너 내부의 값을 걸러서 새로운 컨테이너로 추출합니다.
reduce
reduce
함수는 컨테이너 내부의 콘텐츠를 하나로 통합합니다.
동영상 내용 수정
reduce
메서드에 전달하는 클로저의 매개변수 이름을 first
, second
보다는 result
, currentItem
과 같은 이름으로 정정하는 것이 좋겠습니다. 첫 번째 매개변수는 초깃값으로부터 출발하여 마지막 요소까지 순회하는 내내의 결괏값입니다. currentItem
은 현재 순회하고 있는 요소의 값을 뜻합니다. 결국 return result + currentItem
이라고 표현한다면 이제까지 더해진 결괏값에 이번 요소의 값을 더한다는 뜻이 되겠습니다.
더 알아보기
flatMap