2016-03-01 14 views
6

क्या एकाधिक पैरामीटर फ़ंक्शन में पहला पैरामीटर पाइप करना संभव है? उदाहरणएफ # पाइप पहला पैरामीटर

date = "20160301" 

के लिए कि पाइप date करना संभव है

DateTime.ParseExact( , "yyyyMMDD", CultureInfo.InvariantCulture) 

उत्तर

9

जैसा कि @yuyoyuppe his/her answer में बताता है, आप सीधे ParseExact में पाइप नहीं कर सकते क्योंकि यह एक विधि है, और इस तरह से कोई नहीं है।

यह अक्सर एक curried एडाप्टर समारोह को परिभाषित करने के लिए एक अच्छा विकल्प है, लेकिन आप भी एक गुमनाम समारोह में पाइप अगर आप केवल स्थानीय स्तर पर यह आवश्यकता कर सकते हैं:

let res = 
    date |> (fun d -> DateTime.ParseExact(d, "yyyyMMdd", CultureInfo.InvariantCulture)) 

जो आपको एक DateTime मूल्य देता है:

> res;; 
val it : DateTime = 01.03.2016 00:00:00 
7

में this से:

तरीके आमतौर पर गुजर तर्कों की टपल फार्म का उपयोग करें। यह अन्य .NET भाषाओं के परिप्रेक्ष्य से एक स्पष्ट परिणाम प्राप्त करता है क्योंकि टुपल फ़ॉर्म .NET विधियों में तर्कों को पारित करने के तरीके से मेल खाता है।

जब से तुम एक समारोह जो सीधे टपल स्वीकार करता करी नहीं कर सकते, तो आप ParseExact रैप करने के लिए कि करना होगा:

let parseExact date = DateTime.ParseExact(date, "yyyyMMDD", CultureInfo.InvariantCulture) 

शायद असंबंधित, लेकिन उत्पादन तर्क की तरह बाध्य किया जा सकता है:

let success, value = Double.TryParse("2.5") 

ध्यान दें कि TryParse दूसरे तर्क के साथ byref के रूप में ट्यूपल स्वीकार करता है।