연산자(Operators)는 5개 테마로 분류할 수 있다. - Transforming, Filtering, Combining , Time Manipulating, Sequence.
Transforming
먼저 Transforming 카테고리부터 알아보자. 첫번째 연산자로 collect 연산자가 있다. collect 연산자는 각 개별의 value를 구독 시점에 배열로 한 번에 묶어서 방출시킨다. 만약 받는 개수를 끊어서 받고 싶다면 collect() 에 파라미터 int 값을 넣어 원하는 갯수만큼 이벤트나 value를 받을 수 있다.
다음 Transforming 연산자로는 map 이다. 우리가 일반적으로 아는 map 고차함수와 매우 유사하다. 업스트림에서 밸류를 받아서 개별적으로 처리해준 뒤 다운스트립에 흘려보내준다. 앞선 collect와의 차이는 밸류를 묶어서 그대로 받을 것인가 아니면 개별적인 값을 가공한 후 받을 것인가라고 할 수 있다.
다음 Transforming 연산자는 replaceNil 이다. 이 연산자는 업스트림에서 어떤 밸류를 받더라도 옵셔널 값을 씌워서 반환한다. 만약 값이 없다면 미리 지정해둔 기본값+옵셔널로 반환해버린다.
다음 transforming 연산자는 replaceEmpty() 이다. 이 연산자는 비어있는 스트림을 구독할 때 디폴트 값을 셋팅해줄 수 있다.
다음 transforming 연산자는 scan()으로 이전값과 현재 받아온 값을 재료로 요리하고 싶을 때 사용한다.
flatMap은 모나드 개념을 이용한다. Publisher 라는 상자를 열어 내용물을 원하는 대로 요리한 후(타입이 달라져도 상관없다!) 다시 본래 상자인 publisher 안에 넣어 포장한후 다운스트림에 내려보낸다. 따라서 flatMap 연산자를 이용하면 업스트림으로 왔던 Publisher 가 생겨나는데 그걸 또다시 구독해주어 사용할 수 있다. 정리하자면 flatMap은 하나의 아웃풋에 두 개 이상의 publisher를 합성(combine)할 수 있다.
https://www.kodeco.com/5429795-reactive-programming-in-ios-with-combine/lessons/9
'Flutter' 카테고리의 다른 글
| Combine | 4. Filtering Operators (0) | 2024.05.09 |
---|---|
UIView 의 Drawing Cycle (0) | 2024.05.08 |
| Combine | 2. Operators and Subjects (0) | 2024.05.07 |
ViewController의 생명주기 (0) | 2024.05.06 |
| Combine | 1. Getting Started (0) | 2024.05.05 |