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

From Vigyanwiki

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

सिंहावलोकन

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

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

window.addNewControl("Title", 20, 50, 100, 50, true);

पायथन (प्रोग्रामिंग भाषा) में नामित पैरामीटर का उपयोग करके, कॉल को इस प्रकार लिखा जा सकता है:

window.addNewControl(title="Title",
                     xPosition=20,
                     yPosition=50,
                     width=100,
                     height=50,
                     drawingNow=True)

पीएचपी में नामित पैरामीटर का उपयोग करके, कॉल को इस प्रकार लिखा जा सकता है:

$window->addNewControl(title: "Title",
                       xPosition: 20,
                       yPosition: 50,
                       width: 100,
                       height: 50,
                       drawingNow: True);

स्थितीय तर्क वाला संस्करण अधिक अंतर्निहित है। पैरामीटर नाम देने वाले संस्करण अधिक स्पष्ट हैं। परिस्थिति के आधार पर, एक प्रोग्रामर को इनमें से एक या दूसरे को पढ़ना आसान लग सकता है।

प्रोग्रामिंग भाषाओं में उपयोग

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


मापदंडों का क्रम

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

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

वैकल्पिक पैरामीटर और स्थितीय पैरामीटर

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

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

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

अनुकरण

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

दस्तावेज़ के साथ

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

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(&parameters);


विशेष सहयोग

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


शृंखला विधि कॉल के साथ

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

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

यह भी देखें

संदर्भ

  1. एडीए प्रोग्रामिंग भाषा के लिए संदर्भ मैनुअल. United States Department of Defense. 1983.
  2. BillWagner. "नामित और वैकल्पिक तर्क - सी# प्रोग्रामिंग गाइड". docs.microsoft.com (in English). Retrieved 2021-06-16.
  3. "कार्य". lispcookbook.github.io. Retrieved 2021-10-28.
  4. "Functions | Kotlin". Kotlin Help (in English). Retrieved 2021-06-16.
  5. "8. Compound statements". docs.python.org. Retrieved 2021-10-28.
  6. "10.3 Named arguments and defaults". An Introduction to R. Retrieved 2021-10-28.
  7. "PHP: Function arguments - Manual". www.php.net. Retrieved 2021-06-16.
  8. "Ruby 2 Keyword Arguments". thoughtbot.com. 21 July 2014. Retrieved 2021-10-28.
  9. "नामित तर्क". Scala Documentation. Retrieved 2021-06-16.
  10. "Functions — The Swift Programming Language (Swift 5.1)". docs.swift.org. Retrieved 2020-01-27.
  11. KathleenDollard. "स्थिति और नाम के आधार पर तर्क पारित करना - विज़ुअल बेसिक". docs.microsoft.com (in English). Retrieved 2021-06-16.
  12. Developer Library - The Implementation of a Class Provides Its Internal Behavior
  13. "Designated Inits (Using the GNU Compiler Collection (GCC))".
  14. Programming Perl 2.9: Hashes
  15. Perl core module Net::FTP
  16. C++ FAQ, 10.20 What is the "Named Parameter Idiom"?


बाहरी संबंध