Supponiamo che io sono questo tipo:Come eseguire la corrispondenza del modello in Rx. Dove e Seleziona in un unico operatore?
type T = int option
e un'osservabile di quel tipo:
let o : IObservable<T> = // create the observable
Sto cercando un modo migliore per esprimere questo:
o.Where(function | None -> false | Some t -> true)
.Select(function | Some t -> t)
Un osservabile che si propaga solo nel caso
Some
.
Ci sono diverse cose che non mi piacciono.
- sto usando 2 operatori
- Sono pattern matching due volte
- Il secondo pattern matching non è esaustivo (rende visual studio mostrano un messaggio di avviso e si sente dispari)
- troppo codice. Il pattern si ripete ogni volta che ho bisogno di un pattern matching.
Dovresti essere in grado di utilizzare 'SelectMany':' o.SelezionaMany (fun t -> t |> Option.toArray:> int seq) ' – Lee
Suoni come [FSharp.Control.Reactive] (http://fsprojects.github.io/FSharp.Control.Reactive) manca una funzione' choose'. Il progetto prende probabilmente richieste pull :) –
Sembra buono :) Si consiglia di pubblicare un link al tuo PR qui, in modo che i futuri visitatori possano indagare sul suo stato. –