नामित पैरामीटर

कंप्यूटर प्रोग्रामिंग में, नामित पैरामीटर, नामित-पैरामीटर लॉजिक, नामित लॉजिक या कीवर्ड लॉजिक फलन कॉल के लिए प्रत्येक लॉजिक को फलन कॉल के अन्दर दिए गए पैरामीटर पैरामीटर के साथ स्पष्ट रूप से जोड़ने के लिए कंप्यूटर भाषा के समर्थन को संदर्भित करते हैं।

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

उदाहरण के लिए, इस जावा (प्रोग्रामिंग भाषा) या C# विधि कॉल पर विचार करें, जो नामित पैरामीटर का उपयोग नहीं करता है:

पायथन (प्रोग्रामिंग भाषा) में नामित पैरामीटर का उपयोग करके, कॉल को इस प्रकार लिखा जा सकता है: पीएचपी में नामित पैरामीटर का उपयोग करके, कॉल को इस प्रकार लिखा जा सकता है: स्थितीय लॉजिक वाला संस्करण अधिक अंतर्निहित है। पैरामीटर नाम देने वाले संस्करण अधिक स्पष्ट हैं। परिस्थिति के आधार पर, प्रोग्रामर को इनमें से एक या दूसरे को पढ़ना आसान लग सकता है।

प्रोग्रामिंग भाषाओं में उपयोग
नामित पैरामीटर कई भाषाओं में स्पष्ट रूप से समर्थित हैं। उदाहरणों के गैर-विस्तृत चयन में एडा (प्रोग्रामिंग भाषा), C# 4.0+, सीलोन (प्रोग्रामिंग भाषा), कोल्डफ्यूजन मार्कअप लैंग्वेज (सीएफएमएल), सामान्य लिस्प, फोरट्रान, आईडीएल (प्रोग्रामिंग भाषा), कोटलिन (प्रोग्रामिंग भाषा), मेथेमेटिका, पीएल/एसक्यूएल, पावरशेल, पायथन (प्रोग्रामिंग भाषा), आर (प्रोग्रामिंग भाषा), पीएचपी, रूबी (प्रोग्रामिंग भाषा), स्काला (प्रोग्रामिंग भाषा), गपशप, स्विफ्ट (प्रोग्रामिंग भाषा) और मूल दृश्य। ध्यान दें कि ऑब्जेक्टिव-सी में नामित पैरामीटर नहीं हैं (तथापि विधि नाम के कुछ हिस्से नामित पैरामीटर की तरह दिख सकते हैं)।

पैरामीटर का क्रम
उन भाषाओं में जो नामित पैरामीटर का समर्थन नहीं करते हैं, फलन कॉल में लॉजिकों का क्रम आवश्यक रूप से तय किया जाता है, क्योंकि यह एकमात्र विधि है, जिससे भाषा यह पहचान सकती है कि कौन सा लॉजिक किस पैरामीटर के लिए उपयोग किया जाना है।

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

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

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

मीडियाविकि में, कोड (चर),   टेम्प्लेट इत्यादि में, पहले, दूसरे, और इसी तरह अनाम पैरामीटर (या नामित पैरामीटर का मान) द्वारा  ,  , इत्यादि प्रतिस्थापित किया जाएगा।); इन्हें  के रूप में जाना जाता है।

अनुकरण
उन भाषाओं में जो नामित पैरामीटर का समर्थन नहीं करते हैं, कुछ समान लाभ अन्य विधियों से प्राप्त किए जा सकते हैं।

दस्तावेज़ के साथ
दस्तावेज़ीकरण के रूप में उनके मान को जावा (प्रोग्रामिंग भाषा), या टिप्पणियों (C (प्रोग्रामिंग भाषा)) जैसी भाषाओं के लिए एकीकृत विकास वातावरण (आईडीई) में टूलटिप्स द्वारा दोहराया जा सकता है: ऐसी टिप्पणियों की सत्यता के लिए जाँच नहीं की जाती है और लॉजिकों का क्रम महत्वपूर्ण रहता है।

डेटा संरचनाओं के साथ
लॉजिक आदेश प्रतिबंध को हटाना, और कुछ मानों को अनिर्दिष्ट छोड़ने की क्षमता, रिकॉर्ड (कंप्यूटर विज्ञान) या सहयोगी ऐरे को पारित करके प्राप्त की जा सकती है।

उदाहरण के लिए, जावास्क्रिप्ट में, ये दो कॉल समतुल्य हैं: C99 से तुलना करें:

विशेष सहयोग
पर्ल और प्री-2.0 रूबी (प्रोग्रामिंग भाषा) में एक समान परंपरा फलन कॉल के अन्दर सीमांकक को हटाने के लिए विशेष समर्थन के साथ उपलब्ध है (सामान्यतः इसे हैश या विकल्प हैश कहा जाता है)। उदाहरण के तौर पर, कोर मॉड्यूल का नेट::एफ़टीपी नया फलन वैकल्पिक लॉजिकों के हैश को स्वीकार करता है।

शृंखला विधि कॉल के साथ
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में, फ़्लूएंट इंटरफ़ेस के रूप में, नामित पैरामीटर को अनुकरण करने के लिए विधि शृंखला का उपयोग करना संभव है। प्रत्येक नामित-पैरामीटर लॉजिक को लॉजिक ऑब्जेक्ट पर एक विधि से परिवर्तित कर दिया जाता है, जो संशोधित करता है और फिर ऑब्जेक्ट को वापस कर देता है। C++ में, इसे नामित पैरामीटर मुहावरा कहा जाता है। फिर ऑब्जेक्ट को फलन में पास किया जा सकता है जो इसमें उपलब्ध लॉजिकों का उपयोग करता है।

बिल्डर वर्ग द्वारा प्रदान किए गए डिफ़ॉल्ट मानों को ओवरराइड करने की विधि के रूप में मेथड चेनिंग का उपयोग अधिकांशतः बिल्डर पैटर्न के संयोजन में किया जाता है।

यह भी देखें

 * सहायता: नामित और स्थितीय पैरामीटर के लिए टेम्पलेट।
 * फ़्लूएंट इंटरफ़ेस
 * टैग (प्रोग्रामिंग)

बाहरी संबंध

 * https://web.archive.org/web/20070502112455/http://plg.uwaterloo.ca/~rgesteve/cforall/named_pars.html
 * In C++ this paradigm can be easily implemented: Boost Parameter Library
 * Named Parameters in various programming languages at Rosetta Code