Creating custom operators with lift
After learning about and using so many various operators, we are ready to write our own operators. The
Observable class has an operator called
lift. It receives an instance of the
Operator interface. This interface is just an empty one that extends the
Func1<Subscriber<? super R>, Subscriber<? super T>> interface. This means that we can pass even lambdas as operators.
The best way of learning how to use the
lift operator is to write an example of it. Let's create an operator that adds a sequential index to every item emitted (of course, this is doable without a dedicated operator). This way, we will be able to produce indexed items. For this purpose, we need a class that stores an item and its index. Let's create ...