क्या कई पाइपलाइनों को कार्यात्मक संरचना में परिवर्तित करने के लिए एक चरण-दर-चरण प्रक्रिया है?क्या पाइपलाइनों की एक श्रृंखला को कार्यात्मक संरचना में परिवर्तित करने के लिए एक चरण-दर-चरण प्रक्रिया है?
साइड नोट: मैं भी सही संदर्भ में शब्द "कार्यात्मक रचना" का उपयोग किया?
मैं निम्नलिखित कोड है:
let purchase qty inventory =
buyFrom inventory qty |> fromInventory
|> reduceBy qty
मैं कार्यात्मक संरचना का समर्थन करने के लिए इस कोड refactor करना चाहता था।
तो मैंने सोचा कि मैं यह कर सकता है:
let purchase qty inventory =
buyFrom inventory >> fromInventory >> reduceBy qty
इस कोड को संकलित करता है। हालांकि, ऐसा प्रतीत होता है कि डीबगर के भीतर खरीद फ़ंक्शन को आमंत्रित करने का प्रयास करते समय मुझे एक तर्क याद आ रहा है।
यहाँ समारोह के लिए अपने परीक्षण है:
[<Test>]
let ``buy last product``() =
[SomeProduct] |> purchase 1
|> should equal []
नोट:
मैं अभी भी एफपी बुनियादी बातों के साथ संघर्ष कर रहा हूँ और अभी भी में एक पाइप लाइन के कार्य प्रवाह परिवर्तित करने की प्रक्रिया समझ में नहीं आता एक कार्यात्मक संरचना।
मुझे लगता है कि मैं समझता हूं कि कार्यात्मक संरचना आंशिक अनुप्रयोग पर निर्भर करती है जो मुझे लगता है कि मेरे पास अब एक संभाल है। इस प्रकार, मेरे पास यह मानने का कारण है कि मेरे रिफैक्टर फ़ंक्शन में कोई तर्क नहीं है।
वर्कफ़्लो पर कोई मार्गदर्शन मैं कार्यात्मक संरचना में बेहतर होने के लिए उपयोग कर सकता हूं?
परिशिष्ट:
type Product =
| SomeProduct
type TransactionResult = { Price:decimal; Inventory:Product list }
(* Functions *)
let priceOf qty product =
match product with
| SomeProduct -> match qty with
| 3 -> decimal (qty - 1) * 1.99m
| _ -> decimal (qty) * 1.99m
let rec reduceBy count list =
match list with
| first::remaining when count = 1 -> remaining
| first::second::remaining when count > 1 -> second::remaining |> reduceBy (count - 1)
| remaining when count = 0 -> remaining
| _ -> []
let buyFrom inventory qty =
{ Price=priceOf qty (List.head inventory); Inventory=inventory }
let fromInventory transactionResult =
transactionResult.Inventory
सामान्य बात होगी 'चलो ए = ए |> बी |> सी' हो जाता है चलो एफ = बी >> सी'। उदाहरण qty –
के पुन: उपयोग की वजह से कठिन होगा, मैं इसे वर्कफ़्लो पर कोई मार्गदर्शन करता हूं, मैं कार्यात्मक संरचना में बेहतर होने के लिए उपयोग कर सकता हूं? 'जिसका मतलब वर्कफ़्लो [गणना गणना] में नहीं था (https : //msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/computation-expressions-%5Bfsharp%5D)? मैं बस इसे इसलिए देख रहा हूं क्योंकि आप सीख रहे हैं और यह सुनिश्चित करना चाहते हैं कि आप शब्दावली के साथ सही रास्ते पर हैं। –
मेरा मतलब वर्कफ़्लो को कार्य पूरा करने के लिए चरणों की सूची में था। –