सी# में कार्यात्मक प्रोग्रामिंग: उन्नत तकनीकें और अभ्यास

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

सी# में कार्यात्मक प्रोग्रामिंग: उन्नत स्तर



कार्यात्मक प्रोग्रामिंग (FP) एक प्रतिमान है जो हाल के वर्षों में सी# की दुनिया में सक्रिय रूप से प्रवेश कर रहा है। .NET की क्षमताओं के कारण, डेवलपर्स ऑब्जेक्ट-ओरिएंटेड और कार्यात्मक दृष्टिकोणों को जोड़ सकते हैं, जिससे अधिक विश्वसनीय, परीक्षण योग्य और पूर्वानुमानित कोड बनता है। इस लेख में, हम सी# में FP की उन्नत तकनीकों पर चर्चा करेंगे जो आपको LINQ के सरल उपयोग से आगे ले जाने में मदद करेंगी।



1. शुद्ध फ़ंक्शन और दुष्प्रभाव: सख्त नियंत्रण



शुद्ध फ़ंक्शन वह फ़ंक्शन है जिसका परिणाम केवल इनपुट आर्गुमेंट पर निर्भर करता है और जो कोई दुष्प्रभाव (ग्लोबल स्थिति में बदलाव, इनपुट-आउटपुट, अपवाद) उत्पन्न नहीं करता है। सी# में, हम अपरिवर्तनीय प्रकारों का उपयोग करके और पैरामीटर के संशोधन से बचकर इस आदर्श के करीब पहुँच सकते हैं।



// शुद्ध फ़ंक्शन: परिणाम केवल x और y पर निर्भर करता हैpublic static int Add(int x, int y) => x + y;

// अशुद्ध फ़ंक्शन: बाहरी स्थिति पर निर्भर करता हैprivate static int _counter = 0;public static int IncrementCounter() => ++_counter;


उन्नत स्तर पर, शुद्ध गणनाओं को दुष्प्रभाव वाले संचालन से सख्ती से अलग करना महत्वपूर्ण है। इसके लिए, कोई IO पैटर्न (कार्यात्मक भाषाओं में) या सी# में Func<T> और विलंबित गणनाओं के माध्यम से इसके सरलीकृत समकक्षों का उपयोग कर सकता है।



व्यावहारिक तकनीक: "विलंबित निष्पादन"



दुष्प्रभाव वाली क्रिया को तुरंत निष्पादित करने के बजाय, एक डेलिगेट लौटाएँ जो इसे निष्पादित करेगा:



public static Func<int> CreateFileReadOperation(string path){    return () => File.ReadAllText(path).Length; // दुष्प्रभाव विलंबित}

// उपयोगvar operation = CreateFileReadOperation("data.txt");// ... शुद्ध तर्क ...int length = operation(); // दुष्प्रभाव यहाँ निष्पादित होता है


2. फ़ंक्शन कम्पोज़ीशन और करीइंग



कम्पोज़ीशन एक नया फ़ंक्शन बनाने के लिए दो या अधिक फ़ंक्शनों का संयोजन है। करीइंग एक फ़ंक्शन को कई आर्गुमेंट से एक आर्गुमेंट वाले फ़ंक्शनों की श्रृंखला में बदलना है। ये तकनीकें कोड को अधिक मॉड्यूलर और पुन: प्रयोज्य बनाती हैं।



LINQ और कस्टम विधियों के माध्यम से कम्पोज़ीशन



सी# में, कम्पोज़ीशन को एक्सटेंशन विधियों के माध्यम से कार्यान्वित किया जा सकता है:



public static class FuncExtensions{    public static Func<T, TResult> Compose<T, TIntermediate, TResult>(        this Func<T, TIntermediate> first,        Func<TIntermediate, TResult> second)        => x => second(first(x));}

// उदाहरण: f(x) = x + 2, g(x) = x * 3, h = f ∘ gFunc<int, int> addTwo = x => x + 2;Func<int, int> multiplyByThree = x => x * 3;var composed = multiplyByThree.Compose(addTwo); // h(x) = (x*3) + 2Console.WriteLine(composed(5)); // 17


सी# में करीइंग



करीइंग फ़ंक्शन को आंशिक रूप से लागू करने की अनुमति देता है:



public static Func<int, Func<int, int>> CurriedAdd = x => y => x + y;

var addFive = CurriedAdd(5); // आंशिक अनुप्रयोगConsole.WriteLine(addFive(10)); // 15

// अधिक जटिल उदाहरण: उपसर्ग के साथ लॉगिंग फ़ंक्शनpublic static Func<string, Func<string, string>> CreateLogger = prefix => message => $"[{prefix}] {message}";

var infoLogger = CreateLogger("INFO");Console.WriteLine(infoLogger("सिस्टम प्रारंभ हुआ")); // [INFO] सिस्टम प्रारंभ हुआ


3. मोनाड और Option (Maybe) के साथ कार्य



मोनाड एक पैटर्न है जो संदर्भ में लिपटे मानों पर क्रमिक रूप से फ़ंक्शन लागू करने की अनुमति देता है (उदाहरण के लिए, मान की अनुपस्थिति की संभावना या अतुल्यकालिकता)। सी# में, null से बचने के लिए Option<T> या Maybe<T> का कार्यान्वयन लोकप्रिय है।



Option का सरल कार्यान्वयन



public class Option<T>{    private readonly T _value;    private readonly bool _hasValue;        pri

ब्लॉग

पुस्तक अनुशंसाएँ