2016-11-07 11 views
6

में कार्यक्षमता और पाइपलाइन ऑपरेटर को मिलाएं मैं एक परियोजना पर काम कर रहा हूं और मैं संस्थाओं और विशेषताओं को बनाने के लिए वास्तव में कॉम्पैक्ट विधि बनाना चाहता हूं।एफ #

मैं इसे पाइपलाइन ऑपरेटर के साथ करना चाहता हूं। लेकिन मैं इस ऑपरेटर को अतिरिक्त कार्यक्षमता जोड़ना चाहता हूं।

उदाहरण के लिए की तरह

:

let entity = (entity "name") 
       |>> (attribute "attr" String) 
       |>> (attribute "two" String) 

इस उदाहरण में | >> संस्था के लिए एक विशेषता जोड़ने के लिए कार्यक्षमता के साथ एक साथ एक पाइप लाइन ऑपरेटर होगा।

मुझे पता है कि यह काम करता है:

let entity = (entity "name") 
      |> addAttr (attribute "attr" String) 

तो क्या मैं जानना चाहता हूँ, अगर यह मदद

के लिए बदलने के लिए

|> addAttr 

साथ

|>> 

धन्यवाद संभव है

(मैं नहीं करता पता है कि अगर यह भी संभव है)

उत्तर

9

आप बस इस तरह इसे परिभाषित कर सकते हैं:

let (|>>) e a = e |> addAttr a 
+0

जो काम करता है, धन्यवाद! – BrechtL

4

पठनीयता के लिए, मैं दृढ़ता से कस्टम ऑपरेटरों जोड़ने जब एक साधारण समारोह करेंगे दूंगी। addAttr को पाइपलाइन में उपयोग करना आसान बनाने के लिए लिखा जा सकता है:

let addAttr name attrType entity =() // return an updated entity 

let e = 
    entity "name" 
    |> addAttr "attr" String 
    |> addAttr "two" String 
+1

आपके पास एक बिंदु है, मैं अभी भी विभिन्न संभावनाओं को देख रहा हूं। और उनमें से एक कस्टम ऑपरेटरों के साथ होगा और जैसा कि आपने कहा था, दूसरा दिशा में कुछ होगा। – BrechtL