我有bool
三個(或更多)可觀察序列:執行操作
IObservable<bool> a0 = ...;
IObservable<bool> a1 = ...;
IObservable<bool> a2 = ...;
這些序列產生大多false
值,但過一段時間有一個true
(序列也可以是空的)。我對這些值本身不感興趣,而是按照true
值的順序。所以,如果a0
是true
,然後a2
是真實的,最後a1
,我想執行一些動作:
(a0, a2, a1) => ...do something...
但如果true
值出現在另一個命令,我想其他人做一些事情:
(a2, a1, a0) => ...do something else...
(a0, a1, a2) => ...do something entirely else...
所以我只對每個序列的第一個true
值感興趣,並且根據它們出現的順序,我想執行一些操作。
我可以記錄每個第一次出現true
的時間戳,然後在CombineLatest
呼叫中排序,但我有一種感覺,有更好的方法。這種方法的一個問題是我現在依賴記錄時間戳的粒度。
他們能任何其他可觀察火災的真實之前再次觸發一個'真'?這是一場'滾動'比賽嗎,還是三次比賽都開始了? – yamen 2012-04-23 12:42:48
我只對第一個'真正'價值感興趣。之後,我處理觀察員。 – 2012-04-23 12:44:04
我已經根據這個和其他一些天真的假設給出了答案。但是,總體方法應該轉化爲一些情景。 – yamen 2012-04-23 13:08:16