मान लीजिए मैं इस प्रकार है:आरएक्स में पैटर्न मिलान कैसे करें। एक ऑपरेटर में कहां और चुनें?
type T = int option
और उस प्रकार का एक नमूदार:
let o : IObservable<T> = // create the observable
मैं एक बेहतर तरीका के लिए देख रहा हूँ इस व्यक्त करने के लिए:
o.Where(function | None -> false | Some t -> true)
.Select(function | Some t -> t)
एक अवलोकन योग्य जो केवल
Some
मामले का प्रचार करता है।
ऐसी कई चीजें हैं जिन्हें मैं पसंद नहीं करता हूं।
- मैं 2 ऑपरेटरों
- मैं दो बार
- मिलान दूसरा पैटर्न मिलान संपूर्ण नहीं है पैटर्न हूँ का उपयोग कर (दृश्य स्टूडियो चेतावनी दिखाने बनाता है और अजीब लगता है)
- बहुत ज्यादा कोड रहा हूँ। जब भी मुझे पैटर्न मिलान की आवश्यकता होती है तो पैटर्न दोहराता है।
आपको 'SelectMany' का उपयोग करने में सक्षम होना चाहिए:' o.SelectMany (मजेदार टी -> टी |> Option.toArray:> int seq) ' – Lee
लगता है जैसे [FSharp.Control.Reactive] (http://fsprojects.github.io/FSharp.Control.Reactive) में 'select' फ़ंक्शन' गुम है। प्रोजेक्ट शायद पुल अनुरोध लेता है :) –
अच्छा लगता है :) आप यहां अपने पीआर के लिए एक लिंक पोस्ट करना चाहते हैं, ताकि भविष्य के आगंतुक इसकी स्थिति की जांच कर सकें। –