私はこのような結果を達成したいです:
L -1-2-3------4------5-6-7-8----
R ---------A------B----------C--
O ---------A3-----B4---------C8
つまり、基本的にwithLatestFromのようなものですが、両方のオブザーバブルの値を組み合わせます(combinate latestなど)。
そのための準備ができているオペレーターはいないと思います。これを達成する方法はありますか?
withLatestFrom
の結果のセレクターを使用するだけです。クロージャーなしのオーバーロードされた実装は、最初のオブザーバブルを単に無視します。例えば:
Observable.just("one")
.withLatestFrom(Observable.just(1))
{ oneAsString, oneAsInt in return (oneAsString, oneAsInt) }
これは、combineLatest
をdistinctUntilChanged
の後にmap
を付けて使用することで実現できます。
Observable.combineLatest(L,R) { lhs, rhs in
return (lhs, rhs)
}
.distinctUntilChanged { last, new in
return last.1 != new.1
}
.map { combined in
//Do your thing to create the combination
}
R = input.rおよびL = input.lのショートバージョン
let output = input.r
.withLatestFrom(input.l) { ($0, $1) }