Допустим, у нас есть исходный Observable of Ints:
val source:Observable[Int]
Я хотел бы создать еще один Observable, производящий значения, разница которых с первым появившимся значением в source больше 10:
def detect() = Observable[Int](
subscriber =>
if (!subscriber.isUnsubscribed) {
var start:Option[Int] = None
source.subscribe(
item => {
if (start.isEmpty) {
start = Option(item)
}
else {
start.filter(v => Math.abs(item - v) > 10).foreach {
item => subscriber.onNext(item)
}
}
}
)
subscriber.onCompleted()
}
)
Здесь я использовал var start для хранения первого значения source Observable.
Есть ли способ упростить этот код? Мне не нравится этот подход с присвоением значения переменной