CHAPTER 15 맵, 필터, 리듀스
__15.1 맵
맵은 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수
스위프트에서 맵은 배열, 딕셔너리, 세트, 옵셔널 등에서 사용
맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후 다시 컨테이너에 포장하여 반환
기존 컨테이너의 값은 변경되지 않고 새로운 컨테이너가 생성되어 반환
맵은 기존 데이터를 변형하는 데 많이 사용
__15.2 필터
필터는 말 그대로 컨테이너 내부의 값을 걸러서 추출하는 역할을 하는 고차함수
filter 함수의 매개변수로 전달되는 함수의 반환 타입은 Bool
__15.3 리듀스
리듀스는 컨테이너 내부의 콘텐츠를 하나로 합하는 기능을 실행하는 고차함수
배열이라면 배열의 모든 값을 전달인자로 전달받은 클로저의 연산 결과로 합해줍니다.
두 가지 리듀스
첫 번째 리듀스는 클로저가 각 요소를 전달받아 연산한 후 값을 다음 클로저 실행을 위해 반환하며 컨테이너를 순환하는 형태
public func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result
initilalResult
초깃값
nextPartialResult
클로저
nextPartialResult 클로저의 첫 번째 매개변수
모든 순회가 끝나면 리듀스의 최종 결괏값
두 번째 리듀스 메서드는 컨테이너를 순환하며 클로저가 실행되지만 클로저가 따로 결괏값을 반환하지 않는 형태
public func reduce<Result>(into initialResult: Result, _ updateAccumulatingResult: (inout Result, Element) throws -> ()) rethrows -> Result
updateAccumulatingResult 매개변수로 전달받는 클로저의 매개변수 중 첫 번째 매개변수를 inout 매개변수로 사용
__15.4 맵, 필터, 리듀스의 활용
참고
야곰의 스위프트 프로그래밍 https://book.naver.com/bookdb/book_detail.nhn?bid=12571019
댓글