2
Reactive.Linq的GroupBy
會讓您產生一個IObservable<IGroupedObservable<'TKey, 'TValue>>
。你如何從IGroupedObservable獲取值?鑰匙可以通過x.Key
訪問,所以我想這些值可以通過某種類型的轉換來預測。從IGroupedObservable中提取值
這大致就是我想做的事:
open System.Reactive.Linq
let doStuffWithEvenNumbers i = i*10
let doStuffWithOddNumbers i = i*3
let numbers = Observable.Range(0, 10)
let groups = numbers.GroupBy(fun i -> i % 2 = 0)
let subscription1 = groups.Where(fun i -> i.Key).Subscribe(doStuffWithEvenNumbers)
let subscription2 = groups.Where(fun i -> not i.Key).Subscribe(doStuffWithOddNumbers)
當然,這兩個let subscriptionX =
行不會編譯,因爲我需要從IGroupedObservable<bool, int>
到int
。
'SelectMany(id)'是我的第一次嘗試,但是我得到錯誤'No overloads match for method'SelectMany''。如果我複製+逐字粘貼您的行,結果相同。 –
更新了答案,您需要將'IGroupedObservable'上傳到'IObservable'(不隱含在F#中),同時也要注意您的訂戶方法需要更改。 '讓doStuffWithEvenNumbers我= printf「%i」我* 10' – Gluck