मेरे पास टाइप एक्स कहा जाता है और इसमें भेदभाव वाले संघ के रूप में निम्नलिखित सदस्य हैं

type Info= Empty | Value of int | Pair of (int * int)

मेरे पास एक फ़ंक्शन है जो दो तर्क लेता है और n द्वारा की गई तुलना के अनुसार सूची को फ़िल्टर करता है। मैं अंतिम भाग का पता नहीं लगा सकता। मैं उस फ़ंक्शन में अपने n मान के साथ जोड़ी के प्रत्येक मान की तुलना कैसे कर सकता हूं?

let filterInfo (n:int) (xs:Info list) = xs |>  List.filter (fun (x) -> x <> Empty && x > Value n && // ) 
f#
1
wolf 2 अक्टूबर 2018, 13:02

1 उत्तर

सबसे बढ़िया उत्तर

आप एक ऐसा फ़ंक्शन बना सकते हैं जो पैटर्न मिलान का उपयोग करके किसी एकल Info ऑब्जेक्ट की तुलना करता है। ऐसा कुछ पर्याप्त होना चाहिए:

let compareInfo (n:int) (info:Info) =
        match info with
        | Empty -> false
        | Value x -> n > x
        | Pair (a, b) -> ...

आप इसे अपने फ़िल्टर कॉल से n कर कर कॉल कर सकते हैं:

let filterInfo (n:int) (xs:Info list) = xs |>  List.filter (compareInfo n) 
2
Chad Gilbert 2 अक्टूबर 2018, 10:10