IOS- 13

김정현·2023년 3월 20일
0

IOS 개발공부 일지

목록 보기
13/27

모나드

함수 객체 중에서 자신의 컨텍스트와 같은 컨텍스트의 형태로 맵핑할 수 있는 함수객체를 닫힌 함수객체라고 한다.
모나드는 닫힌 함수객체이다.

  • 컨텍스트는 콘텐츠를 담은 무엇인가를 뜻한다.

플랫맵

모나드는 컨텍스트에 포장된 값을 처리하여 포장된 값을 컨텍스트에 다시 반환하는 함수 (맵)을 적용할 수 있다. 이 맵핑의 결과가 함수객체와 같은 컨텍스트를 반환하는 함수 객체를 모나드라고 하며 이런 맵핑을 수행하도록하는 플랫맵이라는 매서드를 활용한다.

  • 맵 vs 플랫(컴팩트) 차이
let optional: [Int?] = [1, 2, nil, 5]

let mapped: [Int?] = optional.map{ $0 }
let compactMapped: [Int] = optionals.compactMap{ $0}

print(mapped)       // [Optional](1), [Optional](2), nil, [Optional](5)
print(compactMapped)     //[1,2,5]

플랫맵은 컨텍스트 내부의 컨텍스트를 모두 같은 위상으로 평평하게 펼쳐준다. 포장된 값(위 예시에선 옵셔널로)을 풀어서 같은 위상으로 만들어준다.

-- 제네릭과 익스텐션 익힌 후 다시 보기 --

0개의 댓글