Kotlin supports tuple to a small degree, but it also offers something even better with data classes. We will look at both of these in an RxJava context.
Kotlin supports the quick creation of a Pair containing two items (which can be of differing types). This is a simple two-value, but statically-typed, tuple. You can construct one quickly by putting the to keyword between two values. This is helpful in doing zip() operations between two streams when you just want to pair the two items together.
In the following code (the ch12_21.kt example), we zip a stream of string items with a stream of Int items and put each pair into Pair<String, Int>:
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxkotlin3.Observables
fun main(args: Array<String>) {
val strings = Observable.just("Alpha", "Beta", "Gamma"...