मुझे लगता है कि पर्याप्त डीटा में @ केवीबी कवर से जवाब ils आप fun
के तर्कों में पैटर्न का उपयोग क्यों कर सकते हैं। यह एक विज्ञापन-प्रसार सुविधा नहीं है - F # में, आप कहीं भी पैटर्न का उपयोग कर सकते हैं जहां आप एक चर को बांध सकते हैं। एक और संदर्भों में @kvb द्वारा उदाहरण के कुछ दिखाने के लिए: इसी प्रकार
// When declaring normal functions
let foo [it] = it // Return the value from a singleton list
let fst (a, b) = a // Return first element of a pair
// When assigning value to a pattern using let
let [it] = list
let (a, b) = pair
, आप पैटर्न का उपयोग जब fun
लिख सकते हैं। match
निर्माण थोड़ा अधिक शक्तिशाली है, क्योंकि आप एकाधिक खंड निर्दिष्ट कर सकते हैं।
अब, सक्रिय पैटर्न वास्तव में जादुई नहीं हैं। वे विशेष नामों के साथ सामान्य कार्य हैं। जब संकलक एक नामित पैटर्न पाता है तो संकलक सक्रिय पैटर्न के लिए खोज करता है।
val (|KeyValue|) : KeyValuePair<'a,'b> -> 'a * 'b
पैटर्न एक सामान्य एफ # टपल जाता है कि उसके बाद एक नेस्टेड पैटर्न (k, v)
(जो k
और करने के लिए पहला तत्व प्रदान करती है से मिलान में एक KevValuePair
वस्तु बदल जाता है: उदाहरण के लिए, पैटर्न का उपयोग कर रहे बस एक समारोह है दूसरा v
)। कंपाइलर अनिवार्य रूप से आपके कोड का अनुवाद करता है:
myDictionary |> Seq.iter (fun _arg0 ->
let _arg1 = (|KeyValue|) _arg0
let (k, v) = _arg1
doSomething k v)
स्रोत
2012-11-27 18:43:25
धन्यवाद, यह एक आंख खोलने वाला, केवीबी है! मुझे निश्चित रूप से उस अंतिम उदाहरण को ध्यान में रखना होगा, विशेष रूप से। – MiloDC