야곰의 스위프트 프로그래밍
    • 01
      스위프트 시작하기
    • 시작 전 필독사항
      이름짓기, 콘솔로그, 문자열 보간법
    • 02
      문법
    • 상수와 변수
      기본 데이터 타입
      Any, AnyObject, nil
      컬렉션 타입
      함수 기본
      함수 고급
      조건문
      반복문
      옵셔널
      옵셔널 값 추출
      구조체
      클래스
      열거형
      값 타입과 참조 타입
      클로저
      다양한 클로저표현
      프로퍼티
      프로퍼티 감시자
      상속
      인스턴스의 생성과 소멸
      옵셔널 체이닝과 nil 병합 연산자
      타입캐스팅
      assert와 guard
      프로토콜
      익스텐션
      오류처리
    • 03
      고차함수 활용
    • 고차함수
    • 04
      마무리
    • 더 알아보기
    고차함수
    배우기
    03 고차함수 활용
    고차함수

    고차함수(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

    실습 내용

    클로저 문법이 선행되어야 합니다. 

    세 고차함수의 동작이 이해될 때까지 연습해 보세요 :)

    질문하기