पर आधारित पैटर्न मिलान F # में आप पैटर्न फ़ंक्शन हस्ताक्षर पर मिलान कर सकते हैं। मैं फ़ंक्शन के निष्पादन को मापने और आंकड़ों के लिए कॉल करने वाले फ़ंक्शन के साथ कई फ़ंक्शन सजाने के लिए चाहता हूं। वर्तमान समारोह मैं है:फ़ंक्शन हस्ताक्षर
let WrapFunctionWithPrefix(metrics:Metric.Client.IRecorder, functionToWrap, prefix) =
let metricsIdentifier = (sprintf "%s.%s" prefix Environment.MachineName)
using (metrics.StartTimer(metricsIdentifier)) (fun metrics -> functionToWrap)
आप ऊपर देख सकते हैं, उपसर्ग अलग अलग होंगे, और हमारे आवेदन में यह प्रति समारोह परिभाषा अलग अलग होंगे। तो बजाय उपाय उपसर्ग में हर बार जब मैं निम्नलिखित की तरह कुछ करना चाहता हूँ पारित करने के लिए की तुलना में:
let WrapFunction metrics afunc =
match afunc with
| :? (int -> int) -> WrapFunctionWithPrefix(metrics, afunc, "My function 1")
| :? (string -> string) -> WrapFunctionWithPrefix(metrics, afunc, "My function 2")
| _ -> failwith "Unknown function def"
वहाँ पैटर्न के किसी भी तरह से एफ # में समारोह हस्ताक्षर के आधार पर मिलान क्या है?
किसी भी मदद की सराहना की।
बिली
चीयर्स, इस मार्ग से नीचे चला गया और काम किया। थोड़ा और सुरुचिपूर्ण! – bstack