जावास्क्रिप्ट में करींग समारोह

एक बर्तन लें, थोड़ा पानी डालें, कोड की कुछ पंक्तियाँ डालें, कुछ करी पत्ते और मसाला (अपने स्वाद के अनुसार) डालें, इसे 25 मिनट के लिए धीमी आँच पर पकाएँ, और, यहाँ है फंक्शन करिंग, उत्पादन में परोसने के लिए तैयार . बस मज़ाक कर रहे हैं लड़के और गोल्स।
हैलो, जेएस देव। मैं एक गर्म विषय "फ़ंक्शन करीइंग" के साथ वापस आ गया हूँ
इस कहानी में शामिल हैं:
- करी क्या है, यह कैसे काम करता है और इसका उपयोग क्यों किया जाता है।
कहानी यहीं से शुरू होती है
फंक्शन करी क्या है?
करी एक ऐसे फ़ंक्शन को रूपांतरित कर रहा है जो कई तर्कों को लेता है [उदाहरण: functionName(a, b,c)] कई कार्यों में जो अनुक्रम में एक ही तर्क लेते हैं।
ठीक है ठीक है.., मुझे पता है कि यह कॉन-फू-जिंग (भ्रामक) लगता है, जब मैंने इसे पहली बार पढ़ा तो मेरी प्रतिक्रियाएं भी वैसी ही थीं।
ठीक है, इसे आसानी से समझते हैं, एक फ़ंक्शन (doSum) जो एक शॉट में सभी तर्क लेता है यानी doSum(a, b, c) [नीचे उदाहरण: सामान्य जोड़ फ़ंक्शन।

कई कार्यों (ऐडनंबर्स (ए), (बी), (सी)) में परिवर्तित हो जाता है जो अनुक्रम में एक समय में एक ही तर्क लेते हैं।
नोट: दोनों कार्यों की कार्यक्षमता (उद्देश्य) समान है, बस बेहतर समझ के लिए उनका नाम बदल दिया गया है।

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

यहां फ़ंक्शन "doSum" दिए गए तर्क को जोड़ता है और पारित किए गए सभी तर्कों का योग देता है।
नीचे उसी फ़ंक्शन का करी संस्करण है (बेहतर समझ के लिए इसका नाम बदला गया है)

ऊपर और नीचे के फ़ंक्शन का आउटपुट समान होगा, 18
AddNumbers उपरोक्त फ़ंक्शन doSum का करीबी संस्करण है, AddNumber पैरेंट फ़ंक्शन हमारे मामले में तर्क यानी 5 लेता है, और एक अन्य अनाम फ़ंक्शन देता है जो हमारे मामले में एक और तर्क यानी 6 लेता है और प्रक्रिया तब तक जारी रहती है जब तक कि सभी पैरामीटर पास नहीं हो जाते, अंतिम अनाम फ़ंक्शन सभी इनपुट को संसाधित करने के बाद मान लौटाता है।
हमने उपरोक्त उदाहरण में नेस्टेड फ़ंक्शंस को लागू किया है, इसलिए प्रत्येक फ़ंक्शन एक तर्क लेता है और अन्य फ़ंक्शन देता है जब तक कि सभी तर्क पूर्ण नहीं हो जाते।
आप बाइंड फ़ंक्शन का उपयोग करके और क्लोजर का उपयोग करके अपने फ़ंक्शन को 2 अलग-अलग तरीकों से करी कर सकते हैं, देखते हैं कि यह कैसा दिखता है
बाइंड फ़ंक्शन का उपयोग करके फ़ंक्शन करी
यदि आप बाइंड फंक्शन के बारे में नहीं जानते हैं, तो मेरी इस कहानी को देखें ।

यहाँ उपरोक्त उदाहरण में, हम जावास्क्रिप्ट के बाइंड फ़ंक्शन का उपयोग कर रहे हैं, और बाइंड फ़ंक्शन का उपयोग करके हम "ऑनबोर्ड यूज़र" फ़ंक्शन कर रहे हैं।
BasicCompanyDetails सभी ऑनबोर्ड किए गए उपयोगकर्ताओं के लिए समान है, इसलिए हम ऑनबोर्ड किए गए सभी उपयोगकर्ताओं के लिए डिफ़ॉल्ट रूप से विवरण उपलब्ध कराना चाहते हैं, यहां हम बाइंड फ़ंक्शन के लिए "बेसिककंपनी विवरण" तर्क पास कर रहे हैं और यहां "ऑनबोर्ड यूज़र" का एक उदाहरण बना रहे हैं बाइंड फ़ंक्शन उस फ़ंक्शन को लौटाता है जिसे आप मेमोरी में किसी स्थान पर स्टोर कर सकते हैं और इसे बाद में निष्पादित कर सकते हैं, यहां हम फ़ंक्शन को ऐडयूज़र में संग्रहीत कर रहे हैं और हम सभी उपयोगकर्ताओं के लिए आह्वान कर रहे हैं।
इस प्रकार आप जावास्क्रिप्ट में बाइंड फ़ंक्शन का उपयोग करके अपने फ़ंक्शन को करी कर सकते हैं। नीचे दी गई छवि में अधिक उदाहरण।

आप addUserToSales विधि को कॉल करते समय दोनों पैराम भी पास कर सकते हैं, यह वही परिणाम आउटपुट करेगा।
क्लोजर का उपयोग कर समारोह करी।
क्लोजर जावास्क्रिप्ट में एक बहुत ही सामान्य लेकिन पेचीदा अवधारणा है, लेकिन इस पर ज्यादा चर्चा नहीं की गई है, आप इसे यहां क्लोजर क्या हैं, इस पर पढ़ सकते हैं ।
आइए क्लोजर का उपयोग करके फंक्शन करींग को लागू करने का प्रयास करें।

उपरोक्त उदाहरण में, हमने एक फ़ंक्शन "ऑनबोर्ड यूज़र" बनाया है जो एक तर्क लेता है और यह एक अन्य अज्ञात फ़ंक्शन देता है जो एक और तर्क लेता है, विवरणों को सारांशित करता है, और रिटर्न देता है।
हम फ़ंक्शन "onBoardUser" को एक तर्क यानी accountDepartmentDetails के साथ कॉल कर रहे हैं और इसे एक चर में संग्रहीत कर रहे हैं (याद रखें कि onBoardUser एक फ़ंक्शन लौटाता है), इसलिए हम एक फ़ंक्शन को एक चर addUsertoAccounts में संग्रहीत करते हैं और अब चर के पास एक फ़ंक्शन है जिसे किसी भी समय लागू किया जा सकता है यह एक तर्क मांग रहा है, इसलिए हमने अज्ञात फ़ंक्शन (onBoardUser द्वारा लौटाया गया) को AddUsertoAccounts में एक तर्क (उपयोगकर्ता विवरण यानी विवरणऑफजॉन) के साथ संग्रहीत किया।
एक बार फ़ंक्शन शुरू हो जाने के बाद, इसने अपने अंदर मौजूद स्टेटमेंट का निष्पादन पूरा कर लिया है और आउटपुट प्रिंट कर लिया है।

यदि कोड की कुछ 10k पंक्तियों के बाद भी कार्यों को लागू किया गया था, तो यह उसी आउटपुट को प्रिंट करेगा, क्योंकि यह एक क्लोजर है, और यह इसके लेक्सिकल स्कोप को याद रखता है।
ES6 के साथ क्युरिंग:

जेएस में क्लोजर के साथ आप फ़ंक्शन करी का उपयोग इस प्रकार कर सकते हैं।
फिर भी, आपके मन में एक सवाल हो सकता है, अगर हम एक समारोह में कई तर्क पारित कर सकते हैं तो हमें करी की आवश्यकता क्यों है?
यह शायद उन शंकाओं का उत्तर देगा।
इसका उपयोग क्यों किया जाता है
क्यों? क्यों? क्यों?
- करींग एक ऐसी तकनीक है जो कार्यों को छोटे कार्यों में विभाजित करती है, प्रत्येक व्यक्तिगत कार्य का अपना कार्य होता है और यह आपके कार्य को शुद्ध और कम त्रुटियों और दुष्प्रभावों से ग्रस्त बनाता है।
- उदाहरण: पहला कार्य उपयोगकर्ता विवरण को मान्य करता है, दूसरा कंपनी विवरण आदि को मान्य करता है।
- इसका उपयोग कार्यात्मक प्रोग्रामिंग में उच्च-क्रम के कार्यों का उपयोग करने के लिए किया जाता है
- यह आपको अपना कोड साफ और व्यवस्थित रखने में मदद करता है।
- साथ ही, आप करींग को एक तंत्र के रूप में उपयोग कर सकते हैं जो आपको यह जांचने में मदद करता है कि आगे बढ़ने से पहले आपके पास सब कुछ है
- उदाहरण: यदि आवश्यक तर्क नहीं मिलते हैं तो प्रत्येक नेस्टेड फ़ंक्शन निष्पादित नहीं होगा।