Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- #docker compose
- IntelliJ
- intellij 즐겨찾기
- intellij 핵심 단축키
- CompletableFuture
- Spring Cloud Netflix
- 자바 ORM 표준 JPA 프로그래밍 정리
- @Transactional Propagation
- 리눅스
- ksql
- 자바 ORM 표준 JPA 프로그래밍
- 원격 브랜 삭제
- vue.js
- HandlerMethodArgumentResolver
- git
- 마이크로 서비스
- 리팩토링 2판
- javascript case
- Stream
- multipart테스트
- 백명석님
- Linux
- java
- aws
- findTopBy
- @TransactionalEventListener
- intellij favorites
- ksqldb
- JPA
- 친절한 SQL 튜닝
Archives
- Today
- Total
시그마 삽질==six 시그마
모나드(Monad) 본문
예전에 읽었던 '스위프트 프로그래밍(저자 야곰)'에 나온 내용을 정리한것입니다.
야곰님의 책 구매를 원하시는 분은 요기를 클릭!
모나드는 값이 있을 수도 있고 없을 수도 있는 컨텍스트를 가지는 함수객체 타입이다.
함수객체: 맵을 적용할수 있는 컨테이너 타입.(Array,Dictionary,Set...)
컨텍스트: 콘텐츠를 담고 있는 그 무언가임.
ex)
물컵에 물이 담겨있으면 물은 콘텐츠고 물컵은 컨텍스트임.컨텍스트가 일종을 컨테이너 역할을함.
옵셔널은 some과 none이라는 두가지의 컨텍스트를 가짐.
옵셔널은 컨테이너와 값을 가지기 때문에 맵 함수를 사용할 수 있습니다.
var value: Int?=2
value.map{ $0+3} //Optional(5)
value=nil
value.map{ $0+3} //nil ==Optiona.none
컨텍스트로부터(Optional(2)) 값을 추출해서 전달받은 함수에 적용하여 5를 만들고 결과값 5를 다시 컨텍스트에 담아 반환
플랫맵은 내부에 포장된 값도 추출해낼 수 있음.
// 코드 16-9 중첩된 컨테이너에서 맵과 플랫맵의 차이
let multipleContainer = [[1, 2, Optional.none], [3, Optional.none], [4, 5, Optional.none]]
let mappedMultipleContainer = multipleContainer.map{ $0.map{ $0 } }
let flatmappedMultipleContainer = multipleContainer.flatMap{ $0.flatMap{ $0 } }
print(mappedMultipleContainer) // [[Optional(1), Optional(2), nil], [Optional(3), nil], [Optional(4), Optional(5), nil]]
print(flatmappedMultipleContainer) // [1, 2, 3, 4, 5]
'프로그래밍 > Programming stuff' 카테고리의 다른 글
애플리케이션 아키텍처와 객체지향 (0) | 2020.04.12 |
---|---|
우아한 객체지향 (0) | 2020.04.11 |
클로저 Closure (computer programming) (0) | 2020.03.04 |
함수형 프로그래밍 (0) | 2020.03.03 |
일급객체(First-class citizen) (0) | 2020.03.03 |
Comments