द्वारा तिमिलेहिन ओमोलाना
शेयर करनाकलरवशेयर करनाईमेल

जानें कि कैसे लैम्ब्डा आपके कोड को अधिक कुशल और बनाए रखने में आसान बना सकता है।

प्रोग्रामिंग भाषाएं लगातार विकसित होती हैं, यहां तक ​​​​कि सी ++ जैसी भी जो खुद को बहुत पहले स्थापित कर चुकी हैं। वे मानक पुस्तकालयों में कार्य जोड़ते हैं और गतिशील क्षेत्र में काम करने वाले प्रोग्रामर के काम को आसान बनाने के लिए अन्य बदलाव करते हैं।

भाषा के विकास द्वारा लाए गए अपडेट के हिस्से के रूप में, सी ++ ने 2011 की रिलीज में लैम्ब्डा एक्सप्रेशन के लिए समर्थन जोड़ा।

लैम्ब्डा अभिव्यक्ति वास्तव में क्या है, और आप इसे सी ++ प्रोग्रामर के रूप में अपने लाभ के लिए कैसे उपयोग कर सकते हैं?

लैम्ब्डा एक्सप्रेशन क्या है?

लैम्ब्डा एक्सप्रेशन को लैम्ब्डा फंक्शन के रूप में भी जाना जाता है। यह तर्कों को स्वीकार करने, संचालन करने और मान वापस करने की क्षमता के साथ एक इनलाइन अभिव्यक्ति है, जैसे एक विशिष्ट कार्य.

आप किसी अन्य फ़ंक्शन के अंदर लैम्ब्डा का उपयोग कर सकते हैं और इसे एक चर के लिए असाइन कर सकते हैं। लांबा फ़ंक्शन एक प्रोग्राम में एक अनाम फ़ंक्शन ऑब्जेक्ट को परिभाषित करने का एक व्यावहारिक तरीका है। लगभग हर भाषा लैम्ब्डा का समर्थन करती है, हालांकि प्रत्येक कार्यान्वयन दूसरों से भिन्न होता है।

instagram viewer

C++ लैम्ब्डा एक्सप्रेशन के भाग क्या हैं?

सी ++ में लैम्ब्डा एक्सप्रेशन का उपयोग करना आसान है। आप C++ में लैम्ब्डा एक्सप्रेशन के सिंटैक्स को निम्नानुसार तोड़ सकते हैं:

[कैप्चर_क्लॉज] (पैरामीटर) विकल्प {एक्सप्रेशन_बॉडी; }

उदाहरण के लिए:

पूर्णांक वैल = 13;
ऑटो समप्लसवैल = [वैल](पूर्णांक एक, पूर्णांक बी) परिवर्तनशीलबिना किसी अपवाद के ->पूर्णांक { वापसी वैल + ए + बी; };
समप्लसवैल(2, 5); // 20

यह कोड घोषित करता है सम प्लस वैल परिवर्तनीय ऑटो क्योंकि लैम्ब्डा अभिव्यक्ति किसी भी डेटा प्रकार को स्वीकार और वापस कर सकती है। यह संकलन के दौरान प्रकार का निर्धारण करने के लिए इसे कंपाइलर पर छोड़ देता है।

उपरोक्त कोड से, आप देख सकते हैं कि लैम्ब्डा अभिव्यक्ति में कई भाग होते हैं जो निर्दिष्ट करते हैं कि यह कैसे संचालित होता है। इनमें से प्रत्येक घटक का त्वरित अवलोकन यहां दिया गया है।

  1. कैप्चर क्लॉज: यह लैम्ब्डा एक्सप्रेशन का पहला भाग है जहाँ आप पहले से मौजूद वैरिएबल निर्दिष्ट कर सकते हैं या एक्सप्रेशन बॉडी में उपयोग करने के लिए नए को परिभाषित कर सकते हैं। कैप्चर निर्दिष्ट करने के विभिन्न तरीके हैं, उदाहरण के लिए:
    ऑटो एडटू = [फू] () { वापसी फू + 2; }; // मूल्य के अनुसार
    ऑटो ऐड थ्री = [और बार] () { वापसी बार + 3; }; // संदर्भ से
    ऑटो ऐडऑलवैल = [=](){ वापसी फू + बार; }; // सभी मूल्य के अनुसार
    ऑटो एडएलरफ = [&] () { वापसी फू + बार; }; // सभी संदर्भ द्वारा

    // कैप्चर क्लॉज में एक वेरिएबल बनाएं
    ऑटो createVarInCapture = [fooBar = foo + bar](){ वापसी फूबार * 5; };

    // कोई कैप्चर नहीं - त्रुटि देता है क्योंकि फू पहुंच योग्य नहीं है
    ऑटो एरर एक्सप्रेशन = [] () { वापसी फू + 2; };

  2. पैरामीटर: लैम्ब्डा एक्सप्रेशन का यह हिस्सा भी वैकल्पिक है। इसमें लैम्ब्डा द्वारा आवश्यक फ़ंक्शन पैरामीटर शामिल हैं। यह सामान्य तरीके से अलग नहीं है जिसे आप सी ++ में फ़ंक्शन पैरामीटर परिभाषित करते हैं।
  3. विकल्प: लैम्ब्डा एक्सप्रेशन को परिभाषित करते समय आप विकल्प भी निर्दिष्ट कर सकते हैं। कुछ विकल्प जिनका आप उपयोग कर सकते हैं वे हैं: परिवर्तनशील, अपवाद (उदाहरण के लिए बिना किसी अपवाद के पहले नमूना कोड में), -> वापसी_प्रकार (उदाहरण के लिए -> int), आवश्यक है, गुण, आदि। परिवर्तनशील विकल्प अक्सर प्रयोग किया जाता है क्योंकि यह लैम्ब्डा के अंदर कैप्चर को संशोधित करने की अनुमति देता है। नीचे दिया गया कोड इसे प्रदर्शित करता है।
    पूर्णांक मूल्य = 10;

    // एक त्रुटि देता है - मान अभिव्यक्ति के अंदर एक स्थिरांक है
    ऑटो डिक्रीमेंट = [मूल्य] () { वापसी --मूल्य; };
    ऑटो वेतन वृद्धि = [मूल्य] () परिवर्तनशील { वापसी ++ मान; };
    वेतन वृद्धि (); // 11

    हालांकि अन्य विकल्पों का शायद ही कभी उपयोग किया जाता है, आप उनके बारे में अधिक जानकारी प्राप्त कर सकते हैं cppreference.com लैम्ब्डा पर पेज।
  4. एक्सप्रेशन बॉडी: यह लैम्ब्डा एक्सप्रेशन का शरीर है जो एक फ़ंक्शन की तरह एक मान निष्पादित करता है और देता है। यदि आवश्यक हो, तो आप लैम्ब्डा अभिव्यक्ति के शरीर को एक से अधिक पंक्तियों में विभाजित कर सकते हैं। हालांकि, अव्यवस्थित कोड को रोकने के लिए इसे यथासंभव संक्षिप्त रखना सबसे अच्छा अभ्यास है।

लैम्ब्डा एक्सप्रेशंस के क्या लाभ हैं?

आपके कोड में लैम्ब्डा फ़ंक्शन का उपयोग करने के कई फायदे हैं। बढ़ी हुई विकास गति और दक्षता के अलावा, लैम्ब्डा से आपको मिलने वाले शीर्ष लाभ इस प्रकार हैं:

  • लैम्ब्डा एक्सप्रेशन कोड को साफ रखने में मदद करते हैं. अपने कोड को सरल और साफ-सुथरा रखने के सर्वोत्तम तरीकों में से एक है जहां संभव हो, लैम्ब्डा का उपयोग करना। यह एक पठनीय और पुन: प्रयोज्य कोड संरचना को बनाए रखने में बहुत मददगार हो सकता है।
  • आप लैम्ब्डा को पैरामीटर के रूप में अन्य कार्यों में पास कर सकते हैं. सी ++ मानक पुस्तकालय काएसटीडी:: सॉर्ट () विधि इस लाभ का उपयोग करती है। फ़ंक्शन को सॉर्ट कैसे करना चाहिए, यह निर्दिष्ट करने के लिए आप इस विधि के मापदंडों में से एक के रूप में एक लैम्ब्डा पास कर सकते हैं। उदाहरण के लिए:
     एसटीडी:: वेक्टर<पूर्णांक> गिरफ्तारी = {2, 5, 1, 3, 4};
    एसटीडी:: सॉर्ट (गिरफ्तारी शुरू (), गिरफ्तारी। अंत (), [](पूर्णांक एक, पूर्णांक बी){ वापसी// गिरफ्तारी = {1, 2, 3, 4, 5}
  • लैम्ब्डा पुन: प्रयोज्य हैं. कभी-कभी, आप किसी नए फ़ंक्शन को परिभाषित किए बिना अपने प्रोग्राम में किसी फ़ंक्शन के दायरे में कोड के ब्लॉक को पुन: प्रयोज्य बनाना चाह सकते हैं। ऐसे मामलों में लैम्ब्डा बहुत मददगार हो सकता है। पुन: प्रयोज्य लैम्ब्डा अभिव्यक्ति के निम्नलिखित उदाहरण पर विचार करें:
    #शामिल <iostream>
    का उपयोग करते हुए नाम स्थानकक्षा;

    पूर्णांकमुख्य(){
    // एक पुन: प्रयोज्य लैम्ब्डा को परिभाषित करें
    ऑटो एडअप = [] (ऑटो ए, ऑटो बी, ऑटो सी) बिना किसी अपवाद के {
    अदालत <<"अब जोड़ रहे हैं... "<< एक <<", "<< बी <<" तथा "<< सी << एंडल;
    वापसी ए + बी + सी;
    };

    अदालत << ऐडअप (22, 33, 44) << एंडल;
    अदालत << ऐडअप (स्ट्रिंग ("प्रसन्न "), डोरी("जन्म"), डोरी("दिन")) << एंडल;
    कोउट << एडअप (सच, असत्य, सच) << एसटीडी:: एंडल; // संख्याओं (1 और 0) के रूप में निष्पादित होता है
    }

    यह कार्यक्रम निम्नलिखित परिणाम उत्पन्न करता है: यह उदाहरण दर्शाता है कि लैम्ब्डा को परिभाषित करना कितना आसान है ताकि आप इसे किसी भी प्रकार के साथ उपयोग कर सकें।

सी ++ में लैम्ब्डा का उपयोग करना

कई अन्य लाभ हैं जो लैम्ब्डा अभिव्यक्ति प्रदान करते हैं, और आप उन्हें खोज लेंगे क्योंकि आपके कार्यक्रम की संरचना अधिक जटिल हो जाती है। वास्तव में, सी ++ प्रोग्रामर कभी-कभी लैम्ब्डा एक्सप्रेशन को क्लोजर के रूप में संदर्भित करते हैं क्योंकि वे कोड में क्लोजर को लागू करने का एक शानदार तरीका हैं।

यदि आप आधुनिक सी ++ अवधारणाओं को अपने कोडबेस में शामिल करना चाहते हैं तो आपको लैम्ब्डा अभिव्यक्तियों पर विचार करना चाहिए।

दैनिक प्रोग्रामिंग समस्याओं के लिए 11 सी++ कोड स्निपेट्स

आगे पढ़िए

शेयर करनाकलरवशेयर करनाईमेल

संबंधित विषय

  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • कोडिंग ट्यूटोरियल

लेखक के बारे में

तिमिलेहिन ओमोलाना (5 लेख प्रकाशित)

टिमिलेहिन एक सॉफ्टवेयर इंजीनियर और तकनीकी लेखक हैं, जो सर्वर-साइड प्रौद्योगिकियों और वितरित प्रणालियों की दुनिया की खोज करना पसंद करते हैं।

तिमिलेहिन ओमोलाना. की और फ़िल्में या टीवी शो

हमारे न्यूज़लेटर की सदस्यता

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें