Tuples and data classes
Kotlin supports Tuples 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, and you just want to pair the two items together.
In the following code, we zip a stream of string items with a stream of Int
items and put each pair into Pair<String,Int>
.
import io.reactivex.Observable
import io.reactivex.rxkotlin.Observables
fun main(args: Array<String>) {
val strings = Observable.just("Alpha", "Beta", "Gamma",
"Delta")
val numbers = Observable.range(1,4)
//Emits Pair<String,Int>
Observables.zip(strings, numbers) { s, n -> s to n }
.subscribe {
...