모나드
- 스위프트는 함수형 프로그래밍 패러다임에서 파생된 기능이나 개념이 종종 등장한다.
- 단순히 고차함수를 사용, 함수를 일급 객체로 사용, 재귀함수를 사용한 로직을 구현하는 등의 특정 기능에 국한되는 것은 아니지만, 모나드를 익혀두면 더 깊이 있는 함수형 프로그래밍을 이해할 수 있다
모나드의 조건
- 타입을 인자로 받는 타입 (특정 타입의 값을 포장)
- 특정 타입의 값을 포장한 것을 반환하는 함수(메서드)가 존재
- 포장된 값을 변환하여 같은 형태로 포장하는 함수(메서드)가 존재
- 옵셔널 = 기본적인 모나드
FlatMap vs Map
let optionals: [Int?] = [1,2,nil,5]
let mapped: [Int?] = optionals.map{ $0 } // [Optional(1),Optional(2),nil,Optional(5)]
let compactMapped: [Int] = optionals.compactMap{ $0 } // compactMap = flatMap
//[1,2,5]
//compactMap 은 컨테이너 내의 컨테이너까지 벗기는? 것을 볼 수 있다.
'Swift' 카테고리의 다른 글
[Swift] 상속 - 스위프트 언어 및 문법(13) - feat.야곰's Swift Programming (0) | 2021.01.19 |
---|---|
[Swift] 서브스크립트 - 스위프트 언어 및 문법(12) - feat.야곰's Swift Programming (0) | 2021.01.18 |
[Swift] 고차함수 - 스위프트 언어 및 문법(10) - feat.야곰's Swift Programming (0) | 2021.01.18 |
[Swift] 옵셔널 체이닝 - 스위프트 언어 및 문법(9) - feat.야곰's Swift Programming (0) | 2021.01.15 |
[Swift] 클로저 - 스위프트 언어 및 문법(8) - feat.야곰's Swift Programming (0) | 2021.01.15 |