ग्रूवी - तरीके

एक तरीका है ग्रूवी में एक वापसी प्रकार के साथ या के साथ परिभाषित किया गया है defकीवर्ड। तरीके किसी भी संख्या में तर्क प्राप्त कर सकते हैं। यह आवश्यक नहीं है कि तर्कों को परिभाषित करते समय प्रकारों को स्पष्ट रूप से परिभाषित किया गया हो। सार्वजनिक, निजी और संरक्षित जैसे संशोधक जोड़े जा सकते हैं। डिफ़ॉल्ट रूप से, यदि कोई दृश्यता संशोधक प्रदान नहीं किया जाता है, तो विधि सार्वजनिक है।

एक विधि का सबसे सरल प्रकार कोई पैरामीटर नहीं है जैसा कि नीचे दिखाया गया है -

def methodName() { 
   //Method code 
}

निम्नलिखित सरल विधि का एक उदाहरण है

class Example {
   static def DisplayName() {
      println("This is how methods work in groovy");
      println("This is an example of a simple method");
   } 
	
   static void main(String[] args) {
      DisplayName();
   } 
}

उपरोक्त उदाहरण में, DisplayName एक सरल विधि है जिसमें दो प्रिंटनल स्टेटमेंट होते हैं जो कंसोल में कुछ टेक्स्ट को आउटपुट करने के लिए उपयोग किए जाते हैं। हमारी स्थैतिक मुख्य विधि में, हम सिर्फ DisplayName विधि को बुला रहे हैं। उपरोक्त विधि का उत्पादन होगा -

This is how methods work in groovy 
This is an example of a simple method

विधि पैरामीटर्स

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

मापदंडों के साथ एक विधि का सबसे सरल प्रकार जैसा कि नीचे दिखाया गया है -

def methodName(parameter1, parameter2, parameter3) { 
   // Method code goes here 
}

निम्नलिखित मापदंडों के साथ सरल विधि का एक उदाहरण है

class Example {
   static void sum(int a,int b) {
      int c = a+b;
      println(c);
   }  
	
   static void main(String[] args) {
      sum(10,5);
   } 
}

इस उदाहरण में, हम 2 मापदंडों के साथ एक योग विधि बना रहे हैं, a तथा b। दोनों पैरामीटर प्रकार के हैंint। फिर हम अपने मुख्य विधि से योग विधि को बुला रहे हैं और मानों को चर तक पहुंचा रहे हैंa तथा b

उपरोक्त विधि का उत्पादन मूल्य 15 होगा।

डिफ़ॉल्ट पैरामीटर

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

निम्नलिखित मापदंडों के साथ सरल विधि का एक उदाहरण है -

def someMethod(parameter1, parameter2 = 0, parameter3 = 0) { 
   // Method code goes here 
}

आइए उसी उदाहरण को देखें जिसे हमने पहले दो संख्याओं को जोड़ने के लिए देखा था और एक विधि बनाई जिसमें एक डिफ़ॉल्ट और दूसरा गैर-डिफ़ॉल्ट पैरामीटर है -

class Example { 
   static void sum(int a,int b = 5) { 
      int c = a+b; 
      println(c); 
   } 
	
   static void main(String[] args) {
      sum(6); 
   } 
}

इस उदाहरण में, हम दो मापदंडों के साथ एक योग विधि बना रहे हैं, a तथा b। दोनों पैरामीटर टाइप इंट के हैं। इस उदाहरण और पिछले उदाहरण के बीच अंतर यह है कि इस मामले में हम एक डिफ़ॉल्ट मान निर्दिष्ट कर रहे हैंb जैसा कि 5. इसलिए जब हम अपने मुख्य विधि से योग विधि कहते हैं, तो हमारे पास केवल एक मान पास करने का विकल्प होता है जो 6 है और इसे पैरामीटर को सौंपा जाएगा a के अंदर sum तरीका।

उपरोक्त विधि का आउटपुट मान 11 होगा।

class Example {
   static void sum(int a,int b = 5) {
      int c = a+b;
      println(c);
   } 
	
   static void main(String[] args) {
      sum(6,6);
   } 
}

हम 2 मानों को पास करके योग विधि भी कह सकते हैं, ऊपर हमारे उदाहरण में हम 6 के 2 मान दे रहे हैं। 6 का दूसरा मान वास्तव में डिफ़ॉल्ट मान को प्रतिस्थापित करेगा जो पैरामीटर को सौंपा गया है b

उपरोक्त विधि का आउटपुट मान 12 होगा।

विधि वापसी मान

तरीके कॉलिंग प्रोग्राम पर वापस मान भी लौटा सकते हैं। आधुनिक समय की प्रोग्रामिंग भाषा में इसकी आवश्यकता होती है जिसमें कोई विधि किसी प्रकार की संगणना करती है और फिर कॉलिंग विधि के लिए वांछित मान लौटाती है।

निम्नलिखित वापसी मूल्य के साथ सरल विधि का एक उदाहरण है।

class Example {
   static int sum(int a,int b = 5) {
      int c = a+b;
      return c;
   } 
	
   static void main(String[] args) {
      println(sum(6));
   } 
}

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

उपरोक्त विधि का आउटपुट मान 11 होगा।

उदाहरण के तरीके

तरीकों को सामान्य रूप से जावा भाषा की तरह ही ग्रूवी के भीतर कक्षाओं में लागू किया जाता है। एक वर्ग और कुछ नहीं बल्कि एक ब्लूप्रिंट या विभिन्न वस्तुओं को बनाने का खाका है जो इसके गुणों और व्यवहारों को परिभाषित करता है। कक्षा की वस्तुएं अपने वर्ग द्वारा परिभाषित गुणों और व्यवहारों को प्रदर्शित करती हैं। तो व्यवहार को कक्षा के अंदर तरीके बनाकर परिभाषित किया जाता है।

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

निम्नलिखित इस बात का उदाहरण है कि कैसे तरीकों को लागू किया जा सकता है।

class Example { 
   int x; 
	
   public int getX() { 
      return x; 
   } 
	
   public void setX(int pX) { 
      x = pX; 
   } 
	
   static void main(String[] args) { 
      Example ex = new Example(); 
      ex.setX(100); 
      println(ex.getX()); 
   } 
}

हमारे उपरोक्त उदाहरण में, ध्यान दें कि इस बार हम अपने वर्ग के तरीकों के लिए कोई स्थिर विशेषता निर्दिष्ट नहीं कर रहे हैं। हमारे मुख्य कार्य में हम वास्तव में उदाहरण वर्ग का एक उदाहरण बना रहे हैं और फिर 'पूर्व' ऑब्जेक्ट की विधि को लागू कर रहे हैं।

उपरोक्त विधि का आउटपुट मान 100 होगा।

स्थानीय और बाहरी पैरामीटर नाम

ग्रोवी स्थानीय और वैश्विक मापदंडों के लिए जावा की तरह ही सुविधा प्रदान करता है। निम्नलिखित उदाहरण में,lx एक स्थानीय पैरामीटर है जिसमें केवल कार्य के दायरे में एक गुंजाइश है getX() तथा xएक वैश्विक संपत्ति है जिसे पूरे उदाहरण वर्ग के अंदर पहुँचा जा सकता है। अगर हम वैरिएबल को एक्सेस करने की कोशिश करते हैंlx के बाहर getX() फ़ंक्शन, हमें एक त्रुटि मिलेगी।

class Example { 
   static int x = 100; 
	
   public static int getX() { 
      int lx = 200; 
      println(lx); 
      return x; 
   } 
	
   static void main(String[] args) { 
      println(getX()); 
   }  
}

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलेंगे।

200 
100

गुण के लिए यह विधि

जावा की तरह, ग्रूवी अपने उदाहरण के सदस्यों तक पहुँच का उपयोग कर सकता है thisकीवर्ड। निम्नलिखित उदाहरण से पता चलता है कि जब हम बयान का उपयोग करते हैंthis.x, यह अपने उदाहरण को संदर्भित करता है और के मूल्य को निर्धारित करता है x तदनुसार।

class Example { 
   int x = 100; 
	
   public int getX() { 
      this.x = 200; 
      return x; 
   } 
	
   static void main(String[] args) {
      Example ex = new Example(); 
      println(ex.getX());
   }
}

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो हमें कंसोल पर मुद्रित 200 का परिणाम मिलेगा।