सॉलिडिटी - कार्य

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

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

कार्य की परिभाषा

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

वाक्य - विन्यास

मूल वाक्यविन्यास यहाँ दिखाया गया है।

function function-name(parameter-list) scope returns() {
   //statements
}

उदाहरण

निम्न उदाहरण का प्रयास करें। यह getResult नामक एक फ़ंक्शन को परिभाषित करता है जो कोई पैरामीटर नहीं लेता है -

pragma solidity ^0.5.0;

contract Test {
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return result;
   }
}

एक समारोह बुला रहा है

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

यह समझने के लिए निम्न कोड को आज़माएं कि स्ट्रिंग सॉलिडिटी में कैसे काम करती है।

pragma solidity ^0.5.0;

contract SolidityTest {   
   constructor() public{       
   }
   function getResult() public view returns(string memory){
      uint a = 1; 
      uint b = 2;
      uint result = a + b;
      return integerToString(result); 
   }
   function integerToString(uint _i) internal pure 
      returns (string memory) {
      
      if (_i == 0) {
         return "0";
      }
      uint j = _i;
      uint len;
      
      while (j != 0) {
         len++;
         j /= 10;
      }
      bytes memory bstr = new bytes(len);
      uint k = len - 1;
      
      while (_i != 0) {
         bstr[k--] = byte(uint8(48 + _i % 10));
         _i /= 10;
      }
      return string(bstr);//access local variable
   }
}

सॉलिडिटी फर्स्ट एप्लीकेशन चैप्टर में दिए गए चरणों का उपयोग करके उपरोक्त प्रोग्राम को चलाएं ।

उत्पादन

0: string: 3

फ़ंक्शन पैरामीटर

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

उदाहरण

निम्न उदाहरण का प्रयास करें। हमने एक का उपयोग किया हैuint2strयहां कार्य करें। यह एक पैरामीटर लेता है।

pragma solidity ^0.5.0;

contract SolidityTest {   
   constructor() public{       
   }
   function getResult() public view returns(string memory){
      uint a = 1; 
      uint b = 2;
      uint result = a + b;
      return integerToString(result); 
   }
   function integerToString(uint _i) internal pure 
      returns (string memory) {
      
      if (_i == 0) {
         return "0";
      }
      uint j = _i;
      uint len;
      
      while (j != 0) {
         len++;
         j /= 10;
      }
      bytes memory bstr = new bytes(len);
      uint k = len - 1;
      
      while (_i != 0) {
         bstr[k--] = byte(uint8(48 + _i % 10));
         _i /= 10;
      }
      return string(bstr);//access local variable
   }
}

सॉलिडिटी फर्स्ट एप्लीकेशन चैप्टर में दिए गए चरणों का उपयोग करके उपरोक्त प्रोग्राम को चलाएं ।

उत्पादन

0: string: 3

वापसी विवरण

एक सॉलिडिटी फ़ंक्शन एक वैकल्पिक हो सकता है returnबयान। यह आवश्यक है यदि आप किसी फ़ंक्शन से मान वापस करना चाहते हैं। यह कथन किसी फ़ंक्शन में अंतिम कथन होना चाहिए।

उपरोक्त उदाहरण के अनुसार, हम स्ट्रिंग वापस करने के लिए uint2str फ़ंक्शन का उपयोग कर रहे हैं।

सॉलिडिटी में, एक फ़ंक्शन कई मानों को भी वापस कर सकता है। नीचे दिए गए उदाहरण देखें -

pragma solidity ^0.5.0;

contract Test {
   function getResult() public view returns(uint product, uint sum){
      uint a = 1; // local variable
      uint b = 2;
      product = a * b;
      sum = a + b;
  
      //alternative return statement to return 
      //multiple values
      //return(a*b, a+b);
   }
}

सॉलिडिटी फर्स्ट एप्लीकेशन चैप्टर में दिए गए चरणों का उपयोग करके उपरोक्त प्रोग्राम को चलाएं ।

उत्पादन

0: uint256: product 2
1: uint256: sum 3