2011-01-30 33 views
47

विधि और फ़ंक्शन के बीच क्या अंतर है? क्या यह एक विधि एक मूल्य देता है और एक समारोह नहीं करता है?विधि और फ़ंक्शन के बीच क्या अंतर है?

+1

का हिस्सा नहीं है। लेकिन मेरे दिमाग में, एक समारोह एक और गणितीय चीज है; यह राज्य नहीं बदलता है, केवल एक मान देता है (जैसे f (x) = 2x)।एक विधि राज्य को संशोधित करती है (जैसे "हैलो वर्ल्ड" आउटपुट) और एक मूल्य वापस कर सकता है। यह मूल रूप से एक डुप्ली है: http://stackoverflow.com/questions/43777/method-vs-message-vs-function-vs उम्मीद है कि आपके प्रश्न का उत्तर दें हालांकि। – Tyler

+0

फ़ंक्शन का अर्थ अधिकांश प्रोग्रामिंग भाषाओं में गणित में इसके अर्थ से संबंधित नहीं है। –

उत्तर

127

विधि वास्तव में एक कार्य एक वर्ग/वस्तु के संदर्भ में उपयोग किया गया है।

जब आप एक वर्ग/वस्तु के बाहर एक समारोह बनाने के लिए, आप इसे एक समारोह कॉल कर सकते हैं लेकिन जब आप एक वर्ग के अंदर एक समारोह बनाने के लिए, आप इसे एक विधि कॉल कर सकते हैं।

class foo { 
    public function bar() { // a method 
    ........ 
    } 
} 

function bar() { // a function not part of an object 
} 

तो एक वस्तु विधियों (कार्यों) और गुण (चर) हो सकता है।

+1

यह बहुत अच्छा जवाब है, बहुत स्पष्ट है। धन्यवाद। – Ben

+4

विधियों को इस वर्ग के भीतर '$ this-> बार() 'कहा जाना चाहिए, अन्यथा आपको पहले कक्षा को तुरंत चालू करना होगा और फिर क्लास इंस्टेंस (ऑब्जेक्ट) का उपयोग करके इसे कॉल करना होगा, जैसे:' $ foo-> बार() '। कार्यों के लिए यह बस 'बार() 'है। – knownasilya

+0

आप रोज़ाना कुछ नया सीखते हैं। –

0

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

package {class Example { 
    public function iAmAMethod():void { 
    addEventListener("listenerFunctionIsNotAMethod", function(event:Event):void { 
     trace("inline function, yay!"); 
    }); 
    } 

}

5

भाव "विधि" और "समारोह" के बीच अंतर यह है कि एक "विधि" एक वर्ग के एक सदस्य समारोह है, जबकि एक स्टैंडअलोन काम नहीं करेगी, और एक स्टैंडअलोन समारोह आमतौर पर वैश्विक संदर्भ में मौजूद है।

2

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

6

शब्द एक-दूसरे का विरोध नहीं करते हैं बल्कि एक subroutine के दो संभावित पहलुओं का वर्णन करते हैं। शब्दों को परिभाषित करने का प्रयास निम्नानुसार है:

सबराउटिन: निर्देशों का एक सेट जिसे एक ही कार्यक्रम में कई बार उपयोग किया जा सकता है।

फ़ंक्शन: एक सबराउटिन जो मान देता है। गणित में कार्यों से व्युत्पन्न (wikipedia)।

विधि: एक ऑब्जेक्ट या क्लास से संबंधित एक सबराउटिन। एक समारोह हो सकता है।

मैं प्रत्येक सबराउटिन के लिए "फ़ंक्शन" शब्द का उपयोग करता हूं जिसका कोई साइड इफेक्ट नहीं होता है लेकिन एक स्पष्ट मूल्य देता है और प्रत्येक सबराउटिन के लिए "विधि" शब्द का दुष्प्रभाव होता है जिसका दुष्प्रभाव होता है।

+0

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

+0

लेकिन सवाल कीवर्ड के बारे में कुछ भी नहीं कहता है। यह बोली जाने वाली भाषा में कोड का वर्णन करने के बारे में एक शब्दावली प्रश्न है। मैं विकिपीडिया लेख की सिफारिश कर सकता हूं http://en.wikipedia.org/wiki/Subroutine – Jonatan

+0

@MarcRochkind कीवर्ड (उप 'कीवर्ड का उपयोग करके मूलभूत परिभाषित नहीं करता है? – Byson

2

फ़ंक्शन एक सामान्य शब्द है जो प्रक्रियात्मक प्रोग्रामिंग दृष्टिकोण में उपयोग किया जाता है, जहां एक वर्ग संपत्ति को परिभाषित करने के लिए विधि ऑब्जेक्ट उन्मुख प्रोग्रामिंग दृष्टिकोण में विधि का उपयोग किया जाता है।

1

हम कक्षा के अंदर विधि को परिभाषित है, हम परिभाषित पक्ष वर्ग बाहर कार्य करते है, समारोह वास्तव में php के भीतर कोई तकनीकी अंतर नहीं वर्ग

संबंधित मुद्दे