Publishers.Zip
제네릭 구조체 | 두 개의 상위 Publisher에 zip 함수를 적용하여 생성되는 Publisher
두 개의 스트림의 배출 항목이 쌍을 이룰 때 그 값들에 대하여 함수를 적용한 값을 발행한다.
이니셜라이저는 조합할 두 개의 Publisher를 받는다.
인자에 들어가는 모든 Publisherd의 에러 타입은 같아야 한다.
zip
오퍼레이터와 관련이 있다.
Int 타입 값을 받는 aSubject
와 String 타입 값을 받는 bSubject
를 zip 오퍼레이터를 사용하여 결합하였다.
1과 2의 코드는 다음과 같이 동작한다.
4의 실행에 의해
aSubject
에 1의 값을 전달한다.bSubject
에는 해당 값과 쌍을 이룰 수 있는 값이 없으므로 해당 Publisher는 값을 내지 않는다.5의 실행에 의해
aSubject
에 2의 값을 전달한다.bSubject
에는 해당 값과 쌍을 이룰 수 있는 값이 없으므로 해당 Publisher는 값을 내지 않는다.6의 실행에 의해
bSubject
에 a의 값을 전달한다.aSubject
에는 1과 2의 값이 전달되었고, 1의 값이 a의 값과 쌍을 이루어 해당 Publisher는 (1, "a")의 값을 낸다.7의 실행에 의해
bSubject
에 b의 값을 전달한다.bSubject
에는 1과 2의 값이 전달되었고, 2의 값이 b의 값과 쌍을 이루어 해당 Publisher는 (2, "b")의 값을 낸다.8의 실행에 의해
aSubject
에 3의 값을 전달한다.bSubject
에는 해당 값과 쌍을 이룰 수 있는 값이 없으므로 해당 Publisher는 값을 내지 않는다.
3의 코드는 다음과 같이 동작한다.
4의 실행에 의해
aSubject
에 1의 값을 전달한다.bSubject
에는 해당 값과 쌍을 이룰 수 있는 값이 없으므로 해당 Publisher는 값을 내지 않는다.5의 실행에 의해
aSubject
에 2의 값을 전달한다.bSubject
에는 해당 값과 쌍을 이룰 수 있는 값이 없으므로 해당 Publisher는 값을 내지 않는다.6의 실행에 의해
bSubject
에 a의 값을 전달한다.aSubject
에는 1과 2의 값이 전달되었고, 1의 값이 a의 값과 쌍을 이루어 해당 Publisher는 1a의 값을 낸다.7의 실행에 의해
bSubject
에 b의 값을 전달한다.bSubject
에는 1과 2의 값이 전달되었고, 2의 값이 b의 값과 쌍을 이루어 해당 Publisher는 2b의 값을 낸다.8의 실행에 의해
aSubject
에 3의 값을 전달한다.bSubject
에는 해당 값과 쌍을 이룰 수 있는 값이 없으므로 해당 Publisher는 값을 내지 않는다.
RxSwift
zip
오퍼레이터를 사용하여 구현할 수 있다.
ReactiveSwift
zip
오퍼레이터를 사용하여 구현할 수 있다.
참고
Last updated