-
모나드Swift/swift 문법 2023. 4. 27. 18:00
: 디자인 패턴 or 자료구조, 특정 기능이 아님
- 순서가 있는 연산을 처리할 때 자주 활용하는 디자인 패턴
- 모나드는 닫힘 함수객체이다.
프로그래밍에서 모나드가 갖추어야 하는 조건
1. 타입을 인자로 받는 타입(특정 타입의 값을 포장)
2. 특정 타입의 값을 포장한 것을 반환하는 함수/ 메서드가 존재
3. 포장된 값을 변환하여 같은 형태로 포장하는 함수/메서드가 존재
예시: 옵셔널
컨텍스트
: 콘텐츠를 담은 그 무엇인가
ex) optional(2)
optional() -> 컨텍스트
2 -> 콘텐츠
func addThree(_ num: Int) -> Int { return num + 3 }
addThree(Optinal(2))
: 실행 불가(자료형이 달라서 실행 불가하다)
Optinal(2).map(addThree) //Optinal(5)
map 함수를 이용하면 컨테이너 안의 값을 처리할 수 있게 된다.
함수객체(Functor)
: 맵을 적용할 수 있는 컨테이너 타입
ex) Array, Dictionary, Set
옵셔널의 map 매서드 구현
extension Optional { func map<U>(f:(Wrapped) -> U) -> U? { switch self { case .some(let x): return f(x) case .none: return .none } } }
값이 있는지 없는지 switch 구문으로 판단하고 넘어온다.
모나드
: 함수객체 중에서 자신의 컨텍스트와 같은 컨텍스트의 형태로 맵핑할 수 있는 함수객체를 닫힌 함수객체(Endofunctor)라고 한다.
모나드는 닫힌 함수객체이다.
'Swift > swift 문법' 카테고리의 다른 글
[swift] 타입의 종류 (0) 2023.05.13 문자열: 출력 형식 지정자 (0) 2023.05.08 스위프트의 메모리 관리 모델 (0) 2023.04.24 프로토콜 (0) 2023.04.24 클래스와 구조체 (0) 2023.04.22