2016-09-29 4 views
5

क्या F # में पैटर्न को समाहित करने का कोई तरीका है?क्या F # में पैटर्न को समाहित करने का कोई तरीका है?

उदाहरण के लिए

हैं, तब यह लिखने की ...

let stringToMatch = "example1" 

match stringToMatch with 
| "example1" | "example2" | "example3" -> ... 
| "example4" | "example5" | "example6" -> ... 
| _ -> ... 

वहाँ किसी तरह इन पंक्तियों के साथ कुछ पूरा करने के लिए है ...

let match1to3 = | "example1" | "example2" | "example3" 
let match4to6 = | "example4" | "example5" | "example6" 

match stringToMatch with 
| match1to3 -> ... 
| match4to6 -> ... 
| _ -> ... 

उत्तर

6

आप सक्रिय पैटर्न के साथ ऐसा कर सकते हैं:

let (|Match1to3|_|) text = 
    match text with 
    | "example1" | "example2" | "example3" -> Some text 
    | _ -> None 

let (|Match4to6|_|) text = 
    match text with 
    | "example4" | "example5" | "example6" -> Some text 
    | _ -> None 

match stringToMatch with 
| Match1to3 text -> .... 
| Match4to6 text -> .... 
| _ -> ... 
+2

बिल्कुल सही! आपने न केवल मेरे प्रश्न का उत्तर दिया, बल्कि सक्रिय पैटर्न सिर्फ मेरे लिए क्लिक किया। धन्यवाद! प्रारंभिक कोड से मिलान करने के लिए – lambdakris

+3

थोड़ा नाइटपिकिंग ** आंशिक ** सक्रिय पैटर्न 'वापसी' कुछ() 'होना चाहिए और मैच सिर्फ 'MatchXtoY -> ...' – Sehnsucht

+2

होना चाहिए, साथ ही, मैचर्स बना सकते थे 'मिलान टेक्स्ट 'के बजाय' function' का उपयोग कर थोड़ा और terse। –

संबंधित मुद्दे