किसी फ़ंक्शन / पद्धति के 'युक्ति' का नाम क्या है?


21

मुझे पूरा यकीन है कि किसी फ़ंक्शन / पद्धति के 'विशेष' के लिए एक विशेष नाम है। यह एक शब्द है जो संदर्भित करता है

  • कितने तर्क हैं
  • तर्कों का क्रम
  • कौन से तर्क वैकल्पिक हैं

क्या उसका कोई नाम है?


2
"चश्मा" के कुछ अलग प्रकार हैं। आप तर्क प्रकार, आदेश और आवश्यकता का उल्लेख करते हैं। एक साथ वापसी प्रकार के साथ लिया जाता है, जिसे एक प्रकार का हस्ताक्षर कहा जाता है। क्या आप कल्पना के कार्य भाग के नाम पर विचार करते हैं? कैसे के बारे में यह नाम स्थान, जैसे वर्ग, पैकेज, मॉड्यूल, आदि? यह प्रोग्रामर या मशीनों के लिए कल्पना है? मेरा जवाब देखिए।
kdbanman

4
मुझे आश्चर्य है कि इस सवाल के चार करीबी वोट हैं - यह एक पूरी तरह से वैध सवाल है IMHO, और काफी जवाबदेह है (वास्तव में, यह पहले से ही उत्तर दिया गया है)।
सेल्के

@ कैल्लम, कृपया अपने प्रश्न को कम अस्पष्ट होने के लिए संपादित करें ताकि यह अप्रभावित हो सके। क्या आप किसी विशिष्ट भाषा से संबंधित हैं? मशीन की युक्ति या प्रोग्रामर की युक्ति? कॉल करने के लिए एक युक्ति या कार्यान्वयन के लिए एक युक्ति?
kdbanman

1
@kdbanman मैं केवल "हस्ताक्षर" शब्द को याद करने की कोशिश कर रहा था। यह अस्पष्ट नहीं है। यह भाषा-विशिष्ट नहीं है। इसका उत्तर दिया गया है। यह ठीक है।
25

@callum, यही मैंने सोचा था। जवाब देने के लिए धन्यवाद।
19

जवाबों:


47

आमतौर पर इसे एक प्रकार का हस्ताक्षर कहा जाता है ।

एक प्रकार के हस्ताक्षर में फ़ंक्शन का रिटर्न प्रकार, तर्कों की संख्या, प्रकार के तर्क या त्रुटियां शामिल हो सकती हैं।


6
आम तौर पर? मैं "प्रोटोटाइप" के लिए उपयोग किया जाता हूं। जो जाहिरा तौर पर टाइप सिग्नेचर प्लस नाम है - en.wikipedia.org/wiki/Function_prototype
ShadSterling

14
@ पोलिऑर्जिक, प्रोटोटाइप की तुलना में हस्ताक्षर अधिक सामान्य है (और इस मामले में अधिक सही): एक प्रोटोटाइप एक हस्ताक्षर की घोषणा करता है। विशेष रूप से, "प्रोटोटाइप" का तात्पर्य कार्यान्वयन के बिना घोषणा है, जैसा कि जावा या सी # विधि घोषणा में interfaceए, या हेडर फ़ाइल में शाब्दिक रूप से सी / सी ++ फ़ंक्शन की घोषणा है (शाब्दिक रूप से कहा जाता है prototype)।
kdbanman

12
इसके अलावा, arity सिर्फ तर्क की संख्या के लिए एक कम सामान्यतः प्रयोग किया जाता है।
सेबी

^ ओह, यह एक दिलचस्प एक है! मुझे यह याद रखना होगा कि जब मैं जेएस में लड़खड़ाता था, क्योंकि मेरे पास केवल तर्क देने के लिए तर्क होते हैं, न कि प्रकार।
अंडरस्कोर_ड

23

TL; DR आप शायद एक फ़ंक्शन हस्ताक्षर (या विधि हस्ताक्षर) के बारे में बात कर रहे हैं , जिसका एक भाग एक हस्ताक्षर है।

लेकिन वास्तव में इस बात पर निर्भर करता है कि आप किसी फ़ंक्शन "कल्पना" को क्या मानते हैं। मैं इसे "एक प्रोग्रामर को कॉल करने के लिए आवश्यक सभी जानकारी" के रूप में व्याख्या करता हूं। इसमें फ़ंक्शन का नाम, पैरामीटर प्रकार, ऑर्डर और आवश्यकता शामिल है, संभवत: वापसी प्रकार, और शायद उस फ़ंक्शन का नाम स्थान भी।

लेकिन उन सभी चीजों की आवश्यकता है या नहीं (या अच्छी तरह से परिभाषित) आप जिस भाषा / वातावरण का उपयोग कर रहे हैं उस पर निर्भर करता है। इसके अलावा, यदि आप " फ़ंक्शन को कॉल करने के लिए मशीन के लिए आवश्यक सभी जानकारी" की परिभाषा बदलते हैं , तो कल्पना संभवत: अलग है 1

कड़ाई से बोलते हुए, एक फ़ंक्शन (या विधि) हस्ताक्षर एक ही भाषा के भीतर एक सुसंगत शब्द, 2, 3 भी नहीं है। 4, 5, 6, 7 लेकिन यह लगभग निश्चित रूप से शब्द है जिसे आप ढूंढ रहे हैं, क्योंकि यह लगभग किसी भी प्रोग्रामर द्वारा समझा जाएगा।


  1. सी ++ स्पेक ड्राफ्ट n337, परिभाषा 1.3.17, हस्ताक्षर में रिटर्न प्रकार शामिल नहीं है, क्योंकि फ़ंक्शन को हल करना आवश्यक नहीं है।

  1. "हस्ताक्षर" में नाम स्थान की जानकारी शामिल नहीं है
  2. "हस्ताक्षर" अपवाद और की तरह संशोधक शामिल public, static, आदि

  1. C ++ "हस्ताक्षर" में रिटर्न प्रकार शामिल नहीं है
  2. सी ++ "हस्ताक्षर" कर वापसी प्रकार शामिल हैं।
  3. C ++ "हस्ताक्षर" में रिटर्न प्रकार शामिल नहीं है, जब तक कि फ़ंक्शन टेम्पलेट की विशेषज्ञता नहीं है।
  4. C ++ "हस्ताक्षरों" में नाम स्थान (कार्यक्षेत्र) की जानकारी और "अन्य विविध" सामान शामिल हैं ...


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

@ माइकलकॉर्जलिंग, वे वैध चिंताएं हैं, लेकिन उन प्रोग्रामों से बहुत महत्वपूर्ण खुदाई होती है जिन्हें अधिकांश प्रोग्रामर "हस्ताक्षर" कहेंगे। फ़ंक्शन को फ़ंक्शन नाम में क्या शामिल किया जाना चाहिए, इसलिए यह अप्रत्यक्ष रूप से हस्ताक्षर का हिस्सा है। भले ही, मुझे नहीं लगता कि कार्य व्यवहार या कार्यान्वयन वही है जो पूछने वाले का इरादा है। मैं तदनुसार संपादित करेगा अगर यह पता चला कि उसने किया था।
kdbanman

हस्ताक्षर हाँ, "कल्पना" नहीं। (Fwiw, मुझे लगता है कि आपका जवाब काफी अच्छा है, और अच्छी तरह से उद्धृत है।)
एक CVN

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

1
क्योंकि, language-agnosticसी + + उदाहरण मेरे (ए) के लिए प्रासंगिक हैं और (बी) इस भ्रम के उदाहरण हैं कि अक्सर मानव शब्दावली को घेरते हैं
अंडरस्कोर_ड

0

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


यह सबसे अच्छा उत्तर है यदि प्रश्न वास्तव में फ़ंक्शन / विधि के "युक्ति" का नाम है। हस्ताक्षर स्वयं कुछ भी नहीं बताता है कि विधि वास्तव में क्या करती है, मापदंडों की सीमा, गैर-कार्यकलापों और इतने पर अनुमति दी ...
ch7kor
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.