Programming/Swift

[Swift] 문법 다시보기 - 맵, 필터, 리듀스 (map, filter, reduce)

devssun 2021. 10. 15. 23:23
728x90
반응형

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다.


맵, 필터, 리듀스

  • 맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후 다시 컨테이너에 포장하여 반환한다
  • 맵은 기존 데이터를 변형(transform)하는 데 많이 사용한다

필터

  • 컨테이너 내부의 값을 걸러서 추출, 새로운 컨테이너에 값을 담아 반환한다, 기존 콘텐츠를 변형 X

리듀스

  • 결합(combine)이라고 불려야 마땅한 기능, 컨테이너 내부의 콘텐츠를 하나로 합하는 기능 실행
  • 두가지 형태로 구현, 첫 번째 리듀스는 클로저가 각 요소를 전달받아 연산한 후 다음 클로저 실행을 위해 반환하며 컨테이너를 순환하는 형태
func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result

https://developer.apple.com/documentation/swift/array/2298686-reduce

  • 두 번째 리듀스 메서드는 컨테이너를 순환하며 클로저가 실행되지만 클로저가 따로 결괏값을 반환하지 않는 형태
func reduce<Result>(into initialResult: Result, _ updateAccumulatingResult: (inout Result, Element) throws -> ()) rethrows -> Result

https://developer.apple.com/documentation/swift/array/3126956-reduce

반응형