Flutter

| Combine | 3. Transforming Operators

flutter developer 2024. 5. 8. 13:53

 

연산자(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

 

Reactive Programming in iOS with Combine, Episode 9: More Transforming Operators

Learn about how the scan and flatMap operators can be used in your code to do more advanced transformations.

www.kodeco.com