다른 퍼블리셔와 요소를 결합새 튜블로방출함 ( 같은 인덱스 값이어야함.)
let numbersPub = PassthroughSubject<Int, Never>()
let lettersPub = PassthroughSubject<String, Never>()
cancellable = numbersPub
.zip(lettersPub)
.sink { print("\\($0)") }
numbersPub.send(1) // numbersPub: 1 lettersPub: zip output: <none>
numbersPub.send(2) // numbersPub: 1,2 lettersPub: zip output: <none>
letters.send("A") // numbers: 1,2 letters:"A" zip output: <none>
numbers.send(3) // numbers: 1,2,3 letters: zip output: (1,"A")
letters.send("B") // numbers: 1,2,3 letters: "B" zip output: (2,"B")
// Prints:
// (1, "A")
// (2, "B")
let numbersPub = PassthroughSubject<Int, Never>()
let lettersPub = PassthroughSubject<String, Never>()
cancellable = numbersPub
.zip(lettersPub) { anInt, aLetter in
String(repeating: aLetter, count: anInt)
}
.sink { print("\\($0)") }
numbersPub.send(1) // numbersPub: 1 lettersPub: zip output: <none>
numbersPub.send(2) // numbersPub: 1,2 lettersPub: zip output: <none>
numbersPub.send(3) // numbersPub: 1,2,3 lettersPub: zip output: <none>
lettersPub.send("A") // numbersPub: 1,2,3 lettersPub: "A" zip output: "A"
lettersPub.send("B") // numbersPub: 2,3 lettersPub: "B" zip output: "BB"
// Prints:
// A
// BB
다음과 같은 형식으로 zip을 활용할 수 있음. 클로저로 트렌스포트도 가능함, 본인 포함하여 5개 까지 결합이 가능함.