Sequencing Operators는 데이터 스트림을 순차적으로 처리하고 변형하는 데 사용된다. 이들 연산자는 퍼블리셔에서 방출된 데이터 요소들의 순서를 유지하거나 수정하여 특정 작업을 수행할 때 중요한 역할을 한다. 여기서 당연히 질문이 들어올 수 있다.
??: Transforming Operators 도 변형해서 처리하잖아?
두 연산자 카테고리의 중요한 차이점은 각 요소를 개별적으로 변형하여 다운스트림에 내려보내느냐 스트림의 전체 구조나 요소의 순서와 관련된 작업을 수행후 다운스트림에 내려보내느냐이다. Transforming Operators 는 값마다 확인후 변형시키고, Sequencing Operators 는 스트림을 확인 후 변형시킨다. 즉 개별적인 값을 하나하나 변형시키냐 스트림을 한 번 훑어보고 변형시키느냐의 차이다.
Sequencing operator 의 min() 연산자부터 살펴보자. min연산자는 업스트림의 값들을 한 번 쫙 훑은 뒤에 가장 작은값을 다운스트림에 보낸다. 알아둘점은 min은 그리디하다는 것이다. 모든 스트림의 값들을 확인해야만 최소값을 방출할 수 있다.
max() 연산자는 이름부터 알 수 있듯이 가장 큰 값을 방출시키는 연산자이다. min()과 마찬가지로 스트림내 값들을 전부 확인해야하기 때문에 그리디하다.
count() 연산자는 스트림에서 방출된 요소의 총 수를 계산하여 그 결과를 다운스트림으로 전달한다. 마찬가지로 그리디한 연산자이다.
output(at:) 연산자는 해당하는 인덱스의 이벤트값을 다운스트림에 내려보낸다.
https://www.kodeco.com/5429795-reactive-programming-in-ios-with-combine/lessons/31
'Flutter' 카테고리의 다른 글
| Combine | 10. Managing Backpressure (0) | 2024.05.14 |
---|---|
| Combine | 9. Networking with Combine (0) | 2024.05.14 |
| Combine | 7. Scheduling Operators (0) | 2024.05.13 |
Swift에서 CustomStringConvertible 프로토콜 활용하기 (0) | 2024.05.13 |
| Combine | 6. Timing Operators (0) | 2024.05.12 |