ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모나드
    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
Designed by Tistory.