नामित पैरामीटर
This article needs additional citations for verification. (August 2014) (Learn how and when to remove this template message) |
कंप्यूटर प्रोग्रामिंग में, नामित पैरामीटर, नामित-पैरामीटर तर्क, नामित तर्क या कीवर्ड तर्क फ़ंक्शन कॉल के लिए प्रत्येक पैरामीटर_(कंप्यूटर_प्रोग्रामिंग) को फ़ंक्शन कॉल के भीतर दिए गए पैरामीटर पैरामीटर (कंप्यूटर विज्ञान) के साथ स्पष्ट रूप से जोड़ने के लिए कंप्यूटर भाषा के समर्थन को संदर्भित करते हैं।
सिंहावलोकन
नामित मापदंडों का उपयोग करने वाला एक फ़ंक्शन कॉल एक नियमित फ़ंक्शन कॉल से भिन्न होता है जिसमें तर्कों की एक क्रमबद्ध सूची प्रदान करने के बजाय, प्रत्येक को एक पैरामीटर नाम के साथ जोड़कर तर्क पारित किए जाते हैं।
उदाहरण के लिए, इस जावा (प्रोग्रामिंग भाषा) या सी शार्प (प्रोग्रामिंग भाषा)|सी# विधि कॉल पर विचार करें जो नामित पैरामीटर का उपयोग नहीं करता है:
window.addNewControl("Title", 20, 50, 100, 50, true);
पायथन (प्रोग्रामिंग भाषा) में नामित पैरामीटर का उपयोग करके, कॉल को इस प्रकार लिखा जा सकता है:
window.addNewControl(title="Title",
xPosition=20,
yPosition=50,
width=100,
height=50,
drawingNow=True)
PHP में नामित पैरामीटर का उपयोग करके, कॉल को इस प्रकार लिखा जा सकता है:
$window->addNewControl(title: "Title",
xPosition: 20,
yPosition: 50,
width: 100,
height: 50,
drawingNow: True);
स्थितीय तर्क वाला संस्करण अधिक अंतर्निहित है। पैरामीटर नाम देने वाले संस्करण अधिक स्पष्ट हैं। परिस्थिति के आधार पर, एक प्रोग्रामर को इनमें से एक या दूसरे को पढ़ना आसान लग सकता है।
प्रोग्रामिंग भाषाओं में उपयोग
नामित पैरामीटर कई भाषाओं में स्पष्ट रूप से समर्थित हैं। उदाहरणों के एक गैर-विस्तृत चयन में एडा (प्रोग्रामिंग भाषा),[1] सी शार्प 4.0|सी# 4.0+,[2] सीलोन (प्रोग्रामिंग भाषा)[citation needed], कोल्डफ्यूजन मार्कअप लैंग्वेज (सीएफएमएल)[citation needed], सामान्य लिस्प ,[3] फोरट्रान[citation needed], आईडीएल (प्रोग्रामिंग भाषा)[citation needed], कोटलिन (प्रोग्रामिंग भाषा),[4] मेथेमेटिका[citation needed], पीएल/एसक्यूएल[citation needed], पावरशेल[citation needed], पायथन (प्रोग्रामिंग भाषा),[5] आर (प्रोग्रामिंग भाषा),[6] पीएचपी,[7] रूबी (प्रोग्रामिंग भाषा),[8] स्काला (प्रोग्रामिंग भाषा),[9] गपशप[citation needed], स्विफ्ट (प्रोग्रामिंग भाषा)[10] और मूल दृश्य[11] ध्यान दें कि उद्देश्य सी में नामित पैरामीटर नहीं हैं (भले ही विधि नाम के कुछ हिस्से नामित पैरामीटर की तरह दिख सकते हैं)।[12]
मापदंडों का क्रम
उन भाषाओं में जो नामित मापदंडों का समर्थन नहीं करते हैं, फ़ंक्शन कॉल में तर्कों का क्रम आवश्यक रूप से तय किया जाता है, क्योंकि यह एकमात्र तरीका है जिससे भाषा यह पहचान सकती है कि कौन सा तर्क किस पैरामीटर के लिए उपयोग किया जाना है।
नामित पैरामीटर के साथ, आमतौर पर किसी भी क्रम में तर्क प्रदान करना संभव होता है, क्योंकि प्रत्येक तर्क से जुड़ा पैरामीटर नाम उसके उद्देश्य की पहचान करता है। इससे कार्यक्रम के भागों के बीच सामंजस्य कम हो जाता है। कुछ भाषाएँ नामित मापदंडों का समर्थन करती हैं लेकिन फिर भी तर्कों को एक विशिष्ट क्रम में प्रदान करने की आवश्यकता होती है।
वैकल्पिक पैरामीटर और स्थितीय पैरामीटर
नामित पैरामीटर अक्सर वैकल्पिक पैरामीटर के साथ संयोजन में उपयोग किए जाते हैं। नामित पैरामीटर के बिना, वैकल्पिक पैरामीटर केवल पैरामीटर सूची के अंत में दिखाई दे सकते हैं, क्योंकि यह निर्धारित करने का कोई अन्य तरीका नहीं है कि कौन से मान छोड़े गए हैं। हालाँकि, नामित वैकल्पिक मापदंडों का समर्थन करने वाली भाषाओं में, प्रोग्राम उपलब्ध मापदंडों के किसी भी उपसमूह की आपूर्ति कर सकते हैं, और नामों का उपयोग यह निर्धारित करने के लिए किया जाता है कि कौन से मान प्रदान किए गए हैं।
OCaml जैसी भाषाओं में एक अतिरिक्त जटिलता उत्पन्न होती है जो वैकल्पिक नामित पैरामीटर और आंशिक एप्लिकेशन दोनों का समर्थन करती है। आंशिक रूप से लागू किए गए फ़ंक्शन और उस फ़ंक्शन के बीच अंतर करना सामान्य रूप से असंभव है जिसमें मापदंडों का एक सबसेट प्रदान किया गया है। OCaml सभी वैकल्पिक नामित-पैरामीटर तर्कों के बाद एक स्थितिगत तर्क की आवश्यकता के द्वारा इस अस्पष्टता को हल करता है: इसकी उपस्थिति या अनुपस्थिति का उपयोग यह तय करने के लिए किया जाता है कि फ़ंक्शन पूरी तरह से या आंशिक रूप से लागू किया गया है या नहीं। यदि सभी पैरामीटर वैकल्पिक हैं, तो कार्यान्वयनकर्ता यूनिट प्रकार का एक डमी पोजिशनल पैरामीटर जोड़कर समस्या का समाधान कर सकता है।
मीडियाविकि में, कोड (चर) {{{1}}}
, {{{2}}}
टेम्प्लेट इत्यादि में, पहले, दूसरे, और इसी तरह अनाम पैरामीटर (या नामित पैरामीटर का मान) द्वारा प्रतिस्थापित किया जाएगा 1
, 2
, वगैरह।); इन्हें इस नाम से जाना जाता हैpositional parameterएस।
अनुकरण
उन भाषाओं में जो नामित मापदंडों का समर्थन नहीं करते हैं, कुछ समान लाभ अन्य तरीकों से प्राप्त किए जा सकते हैं।
दस्तावेज़ के साथ
दस्तावेज़ीकरण के रूप में उनके मूल्य को जावा (प्रोग्रामिंग भाषा), या टिप्पणियों (सी (प्रोग्रामिंग भाषा)) जैसी भाषाओं के लिए एकीकृत विकास वातावरण (आईडीई) में टूलटिप्स द्वारा दोहराया जा सकता है:
MyFunctionCall(
20, /* x coordinate */
50, /* y coordinate */
100, /* width */
5, /* height */
TRUE /* drawing now? */
);
ऐसी टिप्पणियों की सत्यता के लिए जाँच नहीं की जाती है और तर्कों का क्रम महत्वपूर्ण रहता है।
डेटा संरचनाओं के साथ
तर्क आदेश प्रतिबंध को हटाना, और कुछ मानों को अनिर्दिष्ट छोड़ने की क्षमता, एक रिकॉर्ड (कंप्यूटर विज्ञान) या सहयोगी सरणी को पारित करके प्राप्त की जा सकती है।
उदाहरण के लिए, जावास्क्रिप्ट में, ये दो कॉल समतुल्य हैं:
MyFunctionCall({ xPosition: 20, yPosition: 50, width: 100, height: 5,
drawingNow: true });
MyFunctionCall({ width: 100, height: 5, xPosition: 20, yPosition: 50,
drawingNow: true });
C99 से तुलना करें:[13]
struct MyParam {
int xPosition;
int yPosition;
int width;
int height;
unsigned char drawingNow;
};
…
MyParam parameters = { .xPosition = 20, .yPosition = 50,
.width = 100, .height = 5, .drawingNow = TRUE };
MyFunctionCall(¶meters);
विशेष सहयोग
पर्ल और प्री-2.0 रूबी (प्रोग्रामिंग भाषा) में एक समान परंपरा मौजूद है (आमतौर पर इसे हैश या विकल्प हैश कहा जाता है)[14]), फ़ंक्शन कॉल के भीतर सीमांकक को हटाने के लिए विशेष समर्थन के साथ। उदाहरण के तौर पर, कोर मॉड्यूल का नेट::एफ़टीपी नया फ़ंक्शन वैकल्पिक तर्कों के हैश को स्वीकार करता है।[15]
जंजीर विधि कॉल के साथ
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में, धाराप्रवाह इंटरफ़ेस के रूप में, नामित मापदंडों को अनुकरण करने के लिए विधि शृंखला का उपयोग करना संभव है। प्रत्येक नामित-पैरामीटर तर्क को तर्क ऑब्जेक्ट पर एक विधि से बदल दिया जाता है जो संशोधित करता है और फिर ऑब्जेक्ट को वापस कर देता है। C++ में, इसे नामित पैरामीटर मुहावरा कहा जाता है।[16] फिर ऑब्जेक्ट को एक फ़ंक्शन में पास किया जा सकता है जो इसमें मौजूद तर्कों का उपयोग करता है।
बिल्डर वर्ग द्वारा प्रदान किए गए डिफ़ॉल्ट मानों को ओवरराइड करने के तरीके के रूप में मेथड चेनिंग का उपयोग अक्सर बिल्डर पैटर्न के संयोजन में किया जाता है।
यह भी देखें
- सहायता:टेम्पलेट#हैंडलिंग पैरामीटर|सहायता:नामांकित और स्थितीय मापदंडों के लिए टेम्पलेट।
- धाराप्रवाह इंटरफ़ेस
- टैग (प्रोग्रामिंग)
संदर्भ
- ↑ एडीए प्रोग्रामिंग भाषा के लिए संदर्भ मैनुअल. United States Department of Defense. 1983.
- ↑ BillWagner. "नामित और वैकल्पिक तर्क - सी# प्रोग्रामिंग गाइड". docs.microsoft.com (in English). Retrieved 2021-06-16.
- ↑ "कार्य". lispcookbook.github.io. Retrieved 2021-10-28.
- ↑ "Functions | Kotlin". Kotlin Help (in English). Retrieved 2021-06-16.
- ↑ "8. Compound statements". docs.python.org. Retrieved 2021-10-28.
- ↑ "10.3 Named arguments and defaults". An Introduction to R. Retrieved 2021-10-28.
- ↑ "PHP: Function arguments - Manual". www.php.net. Retrieved 2021-06-16.
- ↑ "Ruby 2 Keyword Arguments". thoughtbot.com. 21 July 2014. Retrieved 2021-10-28.
- ↑ "नामित तर्क". Scala Documentation. Retrieved 2021-06-16.
- ↑ "Functions — The Swift Programming Language (Swift 5.1)". docs.swift.org. Retrieved 2020-01-27.
- ↑ KathleenDollard. "स्थिति और नाम के आधार पर तर्क पारित करना - विज़ुअल बेसिक". docs.microsoft.com (in English). Retrieved 2021-06-16.
- ↑ Developer Library - The Implementation of a Class Provides Its Internal Behavior
- ↑ "Designated Inits (Using the GNU Compiler Collection (GCC))".
- ↑ Programming Perl 2.9: Hashes
- ↑ Perl core module Net::FTP
- ↑ C++ FAQ, 10.20 What is the "Named Parameter Idiom"?
बाहरी संबंध
- 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