डेक्लेरेशन (कंप्यूटर प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Programming language construct specifying an identifier's properties}} {{cleanup|reason=Too many examples of unclear relevancy; not enough references; prob...")
 
No edit summary
Line 6: Line 6:
* for an enumeration constant, is the (only) declaration of the identifier;
* for an enumeration constant, is the (only) declaration of the identifier;
* for a typedef name, is the first (or only) declaration of the identifier."
* for a typedef name, is the first (or only) declaration of the identifier."
C11 specification, 6.7: Declarations, paragraph 5.</ref> डिक्लेरेशन का सबसे अधिक उपयोग [[सबरूटीन]], [[चर (कंप्यूटर विज्ञान)]], कॉन्सटेंट (कंप्यूटर प्रोग्रामिंग), और [[वर्ग (कंप्यूटर प्रोग्रामिंग)]] के लिए किया जाता है, लेकिन अन्य संस्थाओं जैसे एन्यूमरेटर (कंप्यूटर साइंस) और टाइप डेफिनिशन के लिए भी इस्तेमाल किया जा सकता है।<ref name="c11"/>नाम (पहचानकर्ता स्वयं) और इकाई के प्रकार (फ़ंक्शन, चर, आदि) से परे, घोषणाएं आमतौर पर [[डेटा प्रकार]] (चर और स्थिरांक के लिए), या प्रकार के हस्ताक्षर (फ़ंक्शन के लिए) निर्दिष्ट करती हैं; प्रकारों में आयाम भी शामिल हो सकते हैं, जैसे कि डेटा संरचनाओं को व्यवस्थित करना। [[संकलक]] को इकाई के अस्तित्व की घोषणा करने के लिए एक घोषणा का उपयोग किया जाता है; यह उन दृढ़ता से टाइप की गई भाषाओं में महत्वपूर्ण है जिनके लिए फ़ंक्शन, चर और स्थिरांक की आवश्यकता होती है, और उनके प्रकार उपयोग से पहले एक घोषणा के साथ निर्दिष्ट किए जाते हैं, और [[आगे की घोषणा]] में उपयोग किया जाता है।<ref>{{cite web
C11 specification, 6.7: Declarations, paragraph 5.</ref> डिक्लेरेशन का सबसे अधिक उपयोग [[सबरूटीन]], [[चर (कंप्यूटर विज्ञान)]], कॉन्सटेंट (कंप्यूटर प्रोग्रामिंग), और [[वर्ग (कंप्यूटर प्रोग्रामिंग)]] के लिए किया जाता है, लेकिन अन्य संस्थाओं जैसे एन्यूमरेटर (कंप्यूटर साइंस) और टाइप डेफिनिशन के लिए भी उपयोग  किया जा सकता है।<ref name="c11"/>नाम (पहचानकर्ता स्वयं) और इकाई के प्रकार (फ़ंक्शन, चर, आदि) से परे, घोषणाएं सामान्यतः  [[डेटा प्रकार]] (चर और स्थिरांक के लिए), या प्रकार के हस्ताक्षर (फ़ंक्शन के लिए) निर्दिष्ट करती हैं; प्रकारों में आयाम भी सम्मलित  हो सकते हैं, जैसे कि डेटा संरचनाओं को व्यवस्थित करना। [[संकलक]] को इकाई के अस्तित्व की घोषणा करने के लिए एक घोषणा का उपयोग किया जाता है; यह उन दृढ़ता से टाइप की गई भाषाओं में महत्वपूर्ण है जिनके लिए फ़ंक्शन, चर और स्थिरांक की आवश्यकता होती है, और उनके प्रकार उपयोग से पहले एक घोषणा के साथ निर्दिष्ट किए जाते हैं, और [[आगे की घोषणा]] में उपयोग किया जाता है।<ref>{{cite web
| access-date = 2011-06-08
| access-date = 2011-06-08
| author = Mike Banahan
| author = Mike Banahan
Line 12: Line 12:
| title = 2.5. Declaration of variables
| title = 2.5. Declaration of variables
| quote = [A] declaration [...] introduces just the name and type of something but allocates no storage[...].
| quote = [A] declaration [...] introduces just the name and type of something but allocates no storage[...].
| url = http://publications.gbdirect.co.uk/c_book/chapter2/variable_declaration.html}}</ref> शब्द घोषणा शब्द की परिभाषा के साथ अक्सर विपरीत होता है,<ref name="c11"/>लेकिन अर्थ और उपयोग भाषाओं के बीच महत्वपूर्ण रूप से भिन्न होते हैं; नीचे देखें।
| url = http://publications.gbdirect.co.uk/c_book/chapter2/variable_declaration.html}}</ref> शब्द घोषणा शब्द की परिभाषा के साथ अधिकांशतः  विपरीत होता है,<ref name="c11"/>लेकिन अर्थ और उपयोग भाषाओं के बीच महत्वपूर्ण रूप से भिन्न होते हैं; नीचे देखें।


एएलजीओएल परंपरा में भाषाओं में घोषणाएं विशेष रूप से प्रमुख हैं, जिनमें [[बीसीपीएल]] परिवार, सबसे प्रमुख रूप से [[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]], और [[पास्कल (प्रोग्रामिंग भाषा)]] भी शामिल है। [[जावा (प्रोग्रामिंग भाषा)]] शब्द घोषणा का उपयोग करता है, हालांकि जावा को अलग-अलग घोषणाओं और परिभाषाओं की आवश्यकता नहीं होती है।
एएलजीओएल परंपरा में भाषाओं में घोषणाएं विशेष रूप से प्रमुख हैं, जिनमें [[बीसीपीएल]] परिवार, सबसे प्रमुख रूप से [[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]], और [[पास्कल (प्रोग्रामिंग भाषा)]] भी सम्मलित  है। [[जावा (प्रोग्रामिंग भाषा)]] शब्द घोषणा का उपयोग करता है, चूंकि  जावा को भिन्न -भिन्न  घोषणाओं और परिभाषाओं की आवश्यकता नहीं होती है।


== घोषणा बनाम परिभाषा ==
== घोषणा बनाम परिभाषा ==
एक बुनियादी विरोधाभास यह है कि घोषणा में परिभाषा शामिल है या नहीं: उदाहरण के लिए, चाहे एक चर या निरंतर घोषणा [[आरंभीकरण (प्रोग्रामिंग)]], या केवल इसका प्रकार; और इसी प्रकार एक फ़ंक्शन की घोषणा फ़ंक्शन के शरीर ([[कार्यान्वयन]]) को निर्दिष्ट करती है, या केवल इसके प्रकार के हस्ताक्षर।<ref name="c11"/>सभी भाषाओं में यह भेद नहीं होता है: कई भाषाओं में, घोषणाओं में हमेशा एक परिभाषा शामिल होती है, और इसे भाषा के आधार पर या तो घोषणाओं या परिभाषाओं के रूप में संदर्भित किया जा सकता है।{{efn|For example, Java uses "declaration" (class declaration, method declaration), while Python uses "definition" (class definition, function definition).<ref>[https://docs.python.org/2/reference/compound_stmts.html 7. Compound statements], ''The Python Language Reference''</ref>}} हालाँकि, इन अवधारणाओं को उन भाषाओं में अलग किया जाता है जिनके लिए उपयोग से पहले घोषणा की आवश्यकता होती है (जिसके लिए आगे की घोषणाओं का उपयोग किया जाता है), और उन भाषाओं में जहां इंटरफ़ेस और कार्यान्वयन अलग-अलग होते हैं: इंटरफ़ेस में घोषणाएँ होती हैं, कार्यान्वयन में परिभाषाएँ होती हैं।{{efn|This distinction is observed in Pascal "units" (modules), and in conventional C and C++ code organization, which has [[header file]]s consisting largely of pure declarations, and [[source file]]s consisting of definitions, though this is not always strictly observed, nor enforced by the language.}}
एक मौलिक  विरोधाभास यह है कि घोषणा में परिभाषा सम्मलित  है या नहीं: उदाहरण के लिए, चाहे एक चर या निरंतर घोषणा [[आरंभीकरण (प्रोग्रामिंग)]], या सिर्फ  इसका प्रकार; और इसी प्रकार एक फ़ंक्शन की घोषणा फ़ंक्शन के शरीर ([[कार्यान्वयन]]) को निर्दिष्ट करती है, या सिर्फ  इसके प्रकार के हस्ताक्षर।<ref name="c11"/>सभी भाषाओं में यह भेद नहीं होता है: कई भाषाओं में, घोषणाओं में निरंतर  एक परिभाषा सम्मलित  होती है, और इसे भाषा के आधार पर या तो घोषणाओं या परिभाषाओं के रूप में संदर्भित किया जा सकता है।{{efn|For example, Java uses "declaration" (class declaration, method declaration), while Python uses "definition" (class definition, function definition).<ref>[https://docs.python.org/2/reference/compound_stmts.html 7. Compound statements], ''The Python Language Reference''</ref>}} चूंकि , इन अवधारणाओं को उन भाषाओं में भिन्न  किया जाता है जिनके लिए उपयोग से पहले घोषणा की आवश्यकता होती है (जिसके लिए आगे की घोषणाओं का उपयोग किया जाता है), और उन भाषाओं में जहां इंटरफ़ेस और कार्यान्वयन भिन्न -भिन्न  होते हैं: इंटरफ़ेस में घोषणाएँ होती हैं, कार्यान्वयन में परिभाषाएँ होती हैं।{{efn|This distinction is observed in Pascal "units" (modules), and in conventional C and C++ code organization, which has [[header file]]s consisting largely of pure declarations, and [[source file]]s consisting of definitions, though this is not always strictly observed, nor enforced by the language.}}
अनौपचारिक उपयोग में, एक घोषणा केवल एक शुद्ध घोषणा (केवल प्रकार, कोई मूल्य या निकाय) को संदर्भित नहीं करती है, जबकि एक परिभाषा एक घोषणा को संदर्भित करती है जिसमें मूल्य या शरीर शामिल होता है। हालांकि, औपचारिक उपयोग में (भाषा विनिर्देशों में), घोषणा में इन दोनों इंद्रियों को शामिल किया गया है, भाषा द्वारा बेहतर भेद के साथ: सी और सी ++ में, एक फ़ंक्शन की घोषणा जिसमें शरीर शामिल नहीं है, एक [[फ़ंक्शन प्रोटोटाइप]] कहा जाता है, जबकि की घोषणा एक फ़ंक्शन जिसमें शरीर शामिल होता है उसे फ़ंक्शन परिभाषा कहा जाता है। जावा में घोषणाएँ दो रूपों में होती हैं। सार्वजनिक तरीकों के लिए उन्हें इंटरफेस में विधि हस्ताक्षर के रूप में प्रस्तुत किया जा सकता है, जिसमें विधि के नाम, इनपुट प्रकार और आउटपुट प्रकार शामिल हैं। अमूर्त विधियों की परिभाषा में एक समान संकेतन का उपयोग किया जा सकता है, जिसमें कोई परिभाषा नहीं है। संलग्न वर्ग को त्वरित किया जा सकता है, बल्कि एक नया व्युत्पन्न वर्ग, जो विधि की परिभाषा प्रदान करता है, को कक्षा का एक [[उदाहरण (कंप्यूटर विज्ञान)]] बनाने के लिए बनाने की आवश्यकता होगी। [[जावा 8]] से शुरू होकर, लैम्ब्डा एक्सप्रेशन को भाषा में शामिल किया गया था, जिसे फंक्शन डिक्लेरेशन के रूप में देखा जा सकता है।
अनौपचारिक उपयोग में, एक घोषणा सिर्फ  एक शुद्ध घोषणा (सिर्फ  प्रकार, कोई मूल्य या निकाय) को संदर्भित नहीं करती है, जबकि एक परिभाषा एक घोषणा को संदर्भित करती है जिसमें मूल्य या शरीर सम्मलित  होता है। चूंकि , औपचारिक उपयोग में (भाषा विनिर्देशों में), घोषणा में इन दोनों इंद्रियों को सम्मलित  किया गया है, भाषा द्वारा बहुत अच्छा  भेद के साथ: सी और सी ++ में, एक फ़ंक्शन की घोषणा जिसमें शरीर सम्मलित  नहीं है, एक [[फ़ंक्शन प्रोटोटाइप]] कहा जाता है, जबकि की घोषणा एक फ़ंक्शन जिसमें शरीर सम्मलित  होता है उसे फ़ंक्शन परिभाषा कहा जाता है। जावा में घोषणाएँ दो रूपों में होती हैं। सार्वजनिक विधियों  के लिए उन्हें इंटरफेस में विधि हस्ताक्षर के रूप में प्रस्तुत किया जा सकता है, जिसमें विधि के नाम, इनपुट प्रकार और आउटपुट प्रकार सम्मलित  हैं। अमूर्त विधियों की परिभाषा में एक समान संकेतन का उपयोग किया जा सकता है, जिसमें कोई परिभाषा नहीं है। संलग्न वर्ग को त्वरित किया जा सकता है, अपितु  एक नवीनतम  व्युत्पन्न वर्ग, जो विधि की परिभाषा प्रदान करता है, को कक्षा का एक [[उदाहरण (कंप्यूटर विज्ञान)]] बनाने के लिए बनाने की आवश्यकता होगी। [[जावा 8]] से प्रारंभ  होकर, लैम्ब्डा एक्सप्रेशन को भाषा में सम्मलित  किया गया था, जिसे फंक्शन डिक्लेरेशन के रूप में देखा जा सकता है।


== घोषणाएं और परिभाषाएं ==
== घोषणाएं और परिभाषाएं ==
प्रोग्रामिंग भाषाओं के सी-परिवार में, घोषणाएं अक्सर [[हेडर फाइल]]ों में एकत्र की जाती हैं, जो अन्य स्रोत फाइलों में शामिल होती हैं जो इन घोषणाओं का संदर्भ देती हैं और उनका उपयोग करती हैं, लेकिन परिभाषा तक पहुंच नहीं है। शीर्षलेख फ़ाइल में जानकारी कोड के बीच इंटरफ़ेस प्रदान करती है जो घोषणा का उपयोग करती है और जो इसे परिभाषित करती है, सूचना छिपाने का एक रूप। एक घोषणा का उपयोग अक्सर विभिन्न स्रोत फ़ाइलों में परिभाषित फ़ंक्शंस या वेरिएबल्स या [[पुस्तकालय (कम्प्यूटिंग)]] में परिभाषित करने के लिए किया जाता है। परिभाषा प्रकार और घोषणा प्रकार के बीच एक बेमेल एक संकलक त्रुटि उत्पन्न करता है।
प्रोग्रामिंग भाषाओं के सी-परिवार में, घोषणाएं अधिकांशतः  [[हेडर फाइल]]ों में एकत्र की जाती हैं, जो अन्य स्रोत फाइलों में सम्मलित  होती हैं जो इन घोषणाओं का संदर्भ देती हैं और उनका उपयोग करती हैं, लेकिन परिभाषा तक पहुंच नहीं है। शीर्षलेख फ़ाइल में जानकारी कोड के बीच इंटरफ़ेस प्रदान करती है जो घोषणा का उपयोग करती है और जो इसे परिभाषित करती है, सूचना छिपाने का एक रूप। एक घोषणा का उपयोग अधिकांशतः  विभिन्न स्रोत फ़ाइलों में परिभाषित फ़ंक्शंस या वेरिएबल्स या [[पुस्तकालय (कम्प्यूटिंग)]] में परिभाषित करने के लिए किया जाता है। परिभाषा प्रकार और घोषणा प्रकार के बीच एक बेमेल एक संकलक त्रुटि उत्पन्न करता है।


चर के लिए, परिभाषाएँ स्मृति के एक क्षेत्र के लिए मान निर्दिष्ट करती हैं जो घोषणा चरण के दौरान आरक्षित था। फ़ंक्शंस के लिए, परिभाषाएँ फ़ंक्शन बॉडी की आपूर्ति करती हैं। जबकि एक चर या फ़ंक्शन को कई बार घोषित किया जा सकता है, इसे आम तौर पर एक बार परिभाषित किया जाता है (सी ++ में, इसे [[एक परिभाषा नियम]] या ओडीआर के रूप में जाना जाता है)।
चर के लिए, परिभाषाएँ स्मृति के एक क्षेत्र के लिए मान निर्दिष्ट करती हैं जो घोषणा चरण के समय आरक्षित था। फ़ंक्शंस के लिए, परिभाषाएँ फ़ंक्शन बॉडी की आपूर्ति करती हैं। जबकि एक चर या फ़ंक्शन को कई बार घोषित किया जा सकता है, इसे सामान्यतः  एक बार परिभाषित किया जाता है (सी ++ में, इसे [[एक परिभाषा नियम]] या ओडीआर के रूप में जाना जाता है)।


[[जावास्क्रिप्ट]] या [[पायथन (प्रोग्रामिंग भाषा)]] जैसी गतिशील भाषाएं आम तौर पर कार्यों को फिर से परिभाषित करने की अनुमति देती हैं, अर्थात, नाम बाध्यकारी | पुनः बाध्य; एक फ़ंक्शन एक नाम और एक मान (परिभाषा) के साथ किसी अन्य की तरह एक चर है।
[[जावास्क्रिप्ट]] या [[पायथन (प्रोग्रामिंग भाषा)]] जैसी गतिशील भाषाएं सामान्यतः  कार्यों को फिर से परिभाषित करने की अनुमति देती हैं, अर्थात, नाम बाध्यकारी | पुनः बाध्य; एक फ़ंक्शन एक नाम और एक मान (परिभाषा) के साथ किसी अन्य की प्रकार  एक चर है।


यहाँ घोषणाओं के कुछ उदाहरण दिए गए हैं जो C में परिभाषाएँ नहीं हैं:
यहाँ घोषणाओं के कुछ उदाहरण दिए गए हैं जो C में परिभाषाएँ नहीं हैं:
Line 43: Line 43:
== अपरिभाषित चर ==
== अपरिभाषित चर ==
{{main|Undefined variable}}
{{main|Undefined variable}}
कुछ प्रोग्रामिंग भाषाओं में, एक अंतर्निहित घोषणा पहली बार प्रदान की जाती है जब [[संकलन समय]] पर इस तरह के एक चर का सामना करना पड़ता है। अन्य भाषाओं में, ऐसे उपयोग को एक त्रुटि माना जाता है, जिसके परिणामस्वरूप निदान संदेश हो सकता है। कुछ भाषाएं निहित घोषणा व्यवहार के साथ शुरू हुई हैं, लेकिन जैसे-जैसे वे परिपक्व हुईं, उन्होंने इसे निष्क्रिय करने का एक विकल्प प्रदान किया (जैसे [[पर्ल]] का<code>use strict</code>या [[मूल दृश्य]]<code>Option Explicit</code>).
कुछ प्रोग्रामिंग भाषाओं में, एक अंतर्निहित घोषणा पहली बार प्रदान की जाती है जब [[संकलन समय]] पर इस प्रकार  के एक चर का सामना करना पड़ता है। अन्य भाषाओं में, ऐसे उपयोग को एक त्रुटि माना जाता है, जिसके परिणामस्वरूप निदान संदेश हो सकता है। कुछ भाषाएं निहित घोषणा व्यवहार के साथ प्रारंभ  हुई हैं, लेकिन जैसे-जैसे वे परिपक्व हुईं, उन्होंने इसे निष्क्रिय करने का एक विकल्प प्रदान किया (जैसे [[पर्ल]] का<code>use strict</code>या [[मूल दृश्य]]<code>Option Explicit</code>).


== यह भी देखें ==
== यह भी देखें ==

Revision as of 18:24, 26 February 2023

कंप्यूटर प्रोग्रामिंग में, एक घोषणा एक भाषा निर्माण है जो पहचानकर्ता (कंप्यूटर प्रोग्रामिंग) गुणों को निर्दिष्ट करती है: यह एक शब्द (पहचानकर्ता) का अर्थ घोषित करता है।[1] डिक्लेरेशन का सबसे अधिक उपयोग सबरूटीन, चर (कंप्यूटर विज्ञान), कॉन्सटेंट (कंप्यूटर प्रोग्रामिंग), और वर्ग (कंप्यूटर प्रोग्रामिंग) के लिए किया जाता है, लेकिन अन्य संस्थाओं जैसे एन्यूमरेटर (कंप्यूटर साइंस) और टाइप डेफिनिशन के लिए भी उपयोग किया जा सकता है।[1]नाम (पहचानकर्ता स्वयं) और इकाई के प्रकार (फ़ंक्शन, चर, आदि) से परे, घोषणाएं सामान्यतः डेटा प्रकार (चर और स्थिरांक के लिए), या प्रकार के हस्ताक्षर (फ़ंक्शन के लिए) निर्दिष्ट करती हैं; प्रकारों में आयाम भी सम्मलित हो सकते हैं, जैसे कि डेटा संरचनाओं को व्यवस्थित करना। संकलक को इकाई के अस्तित्व की घोषणा करने के लिए एक घोषणा का उपयोग किया जाता है; यह उन दृढ़ता से टाइप की गई भाषाओं में महत्वपूर्ण है जिनके लिए फ़ंक्शन, चर और स्थिरांक की आवश्यकता होती है, और उनके प्रकार उपयोग से पहले एक घोषणा के साथ निर्दिष्ट किए जाते हैं, और आगे की घोषणा में उपयोग किया जाता है।[2] शब्द घोषणा शब्द की परिभाषा के साथ अधिकांशतः विपरीत होता है,[1]लेकिन अर्थ और उपयोग भाषाओं के बीच महत्वपूर्ण रूप से भिन्न होते हैं; नीचे देखें।

एएलजीओएल परंपरा में भाषाओं में घोषणाएं विशेष रूप से प्रमुख हैं, जिनमें बीसीपीएल परिवार, सबसे प्रमुख रूप से सी (प्रोग्रामिंग भाषा) और सी ++, और पास्कल (प्रोग्रामिंग भाषा) भी सम्मलित है। जावा (प्रोग्रामिंग भाषा) शब्द घोषणा का उपयोग करता है, चूंकि जावा को भिन्न -भिन्न घोषणाओं और परिभाषाओं की आवश्यकता नहीं होती है।

घोषणा बनाम परिभाषा

एक मौलिक विरोधाभास यह है कि घोषणा में परिभाषा सम्मलित है या नहीं: उदाहरण के लिए, चाहे एक चर या निरंतर घोषणा आरंभीकरण (प्रोग्रामिंग), या सिर्फ इसका प्रकार; और इसी प्रकार एक फ़ंक्शन की घोषणा फ़ंक्शन के शरीर (कार्यान्वयन) को निर्दिष्ट करती है, या सिर्फ इसके प्रकार के हस्ताक्षर।[1]सभी भाषाओं में यह भेद नहीं होता है: कई भाषाओं में, घोषणाओं में निरंतर एक परिभाषा सम्मलित होती है, और इसे भाषा के आधार पर या तो घोषणाओं या परिभाषाओं के रूप में संदर्भित किया जा सकता है।[lower-alpha 1] चूंकि , इन अवधारणाओं को उन भाषाओं में भिन्न किया जाता है जिनके लिए उपयोग से पहले घोषणा की आवश्यकता होती है (जिसके लिए आगे की घोषणाओं का उपयोग किया जाता है), और उन भाषाओं में जहां इंटरफ़ेस और कार्यान्वयन भिन्न -भिन्न होते हैं: इंटरफ़ेस में घोषणाएँ होती हैं, कार्यान्वयन में परिभाषाएँ होती हैं।[lower-alpha 2] अनौपचारिक उपयोग में, एक घोषणा सिर्फ एक शुद्ध घोषणा (सिर्फ प्रकार, कोई मूल्य या निकाय) को संदर्भित नहीं करती है, जबकि एक परिभाषा एक घोषणा को संदर्भित करती है जिसमें मूल्य या शरीर सम्मलित होता है। चूंकि , औपचारिक उपयोग में (भाषा विनिर्देशों में), घोषणा में इन दोनों इंद्रियों को सम्मलित किया गया है, भाषा द्वारा बहुत अच्छा भेद के साथ: सी और सी ++ में, एक फ़ंक्शन की घोषणा जिसमें शरीर सम्मलित नहीं है, एक फ़ंक्शन प्रोटोटाइप कहा जाता है, जबकि की घोषणा एक फ़ंक्शन जिसमें शरीर सम्मलित होता है उसे फ़ंक्शन परिभाषा कहा जाता है। जावा में घोषणाएँ दो रूपों में होती हैं। सार्वजनिक विधियों के लिए उन्हें इंटरफेस में विधि हस्ताक्षर के रूप में प्रस्तुत किया जा सकता है, जिसमें विधि के नाम, इनपुट प्रकार और आउटपुट प्रकार सम्मलित हैं। अमूर्त विधियों की परिभाषा में एक समान संकेतन का उपयोग किया जा सकता है, जिसमें कोई परिभाषा नहीं है। संलग्न वर्ग को त्वरित किया जा सकता है, अपितु एक नवीनतम व्युत्पन्न वर्ग, जो विधि की परिभाषा प्रदान करता है, को कक्षा का एक उदाहरण (कंप्यूटर विज्ञान) बनाने के लिए बनाने की आवश्यकता होगी। जावा 8 से प्रारंभ होकर, लैम्ब्डा एक्सप्रेशन को भाषा में सम्मलित किया गया था, जिसे फंक्शन डिक्लेरेशन के रूप में देखा जा सकता है।

घोषणाएं और परिभाषाएं

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

चर के लिए, परिभाषाएँ स्मृति के एक क्षेत्र के लिए मान निर्दिष्ट करती हैं जो घोषणा चरण के समय आरक्षित था। फ़ंक्शंस के लिए, परिभाषाएँ फ़ंक्शन बॉडी की आपूर्ति करती हैं। जबकि एक चर या फ़ंक्शन को कई बार घोषित किया जा सकता है, इसे सामान्यतः एक बार परिभाषित किया जाता है (सी ++ में, इसे एक परिभाषा नियम या ओडीआर के रूप में जाना जाता है)।

जावास्क्रिप्ट या पायथन (प्रोग्रामिंग भाषा) जैसी गतिशील भाषाएं सामान्यतः कार्यों को फिर से परिभाषित करने की अनुमति देती हैं, अर्थात, नाम बाध्यकारी | पुनः बाध्य; एक फ़ंक्शन एक नाम और एक मान (परिभाषा) के साथ किसी अन्य की प्रकार एक चर है।

यहाँ घोषणाओं के कुछ उदाहरण दिए गए हैं जो C में परिभाषाएँ नहीं हैं: <वाक्यविन्यास लैंग = सी> बाहरी चार उदाहरण 1; बाहरी int example2; शून्य उदाहरण 3 (शून्य); </वाक्यविन्यास हाइलाइट>

यहाँ घोषणाओं के कुछ उदाहरण हैं जो परिभाषाएँ हैं, फिर से C में: <वाक्यविन्यास लैंग = सी> चार उदाहरण 1; /* फ़ंक्शन परिभाषा के बाहर इसे शून्य से प्रारंभ किया जाएगा। */ int example2 = 5; शून्य उदाहरण 3 (शून्य) {/* ब्रेसिज़ के बीच परिभाषा */ } </वाक्यविन्यास हाइलाइट>

अपरिभाषित चर

कुछ प्रोग्रामिंग भाषाओं में, एक अंतर्निहित घोषणा पहली बार प्रदान की जाती है जब संकलन समय पर इस प्रकार के एक चर का सामना करना पड़ता है। अन्य भाषाओं में, ऐसे उपयोग को एक त्रुटि माना जाता है, जिसके परिणामस्वरूप निदान संदेश हो सकता है। कुछ भाषाएं निहित घोषणा व्यवहार के साथ प्रारंभ हुई हैं, लेकिन जैसे-जैसे वे परिपक्व हुईं, उन्होंने इसे निष्क्रिय करने का एक विकल्प प्रदान किया (जैसे पर्ल काuse strictया मूल दृश्यOption Explicit).

यह भी देखें

टिप्पणियाँ

  1. For example, Java uses "declaration" (class declaration, method declaration), while Python uses "definition" (class definition, function definition).[3]
  2. This distinction is observed in Pascal "units" (modules), and in conventional C and C++ code organization, which has header files consisting largely of pure declarations, and source files consisting of definitions, though this is not always strictly observed, nor enforced by the language.


संदर्भ

  1. 1.0 1.1 1.2 1.3 "A declaration specifies the interpretation and attributes of a set of identifiers. A definition of an identifier is a declaration for that identifier that:
    • for an object [variable or constant], causes storage to be reserved for that object;
    • for a function, includes the function body;
    • for an enumeration constant, is the (only) declaration of the identifier;
    • for a typedef name, is the first (or only) declaration of the identifier."
    C11 specification, 6.7: Declarations, paragraph 5.
  2. Mike Banahan. "2.5. Declaration of variables". GBdirect. Retrieved 2011-06-08. [A] declaration [...] introduces just the name and type of something but allocates no storage[...].
  3. 7. Compound statements, The Python Language Reference


बाहरी संबंध