Solidität - Funktionen

Eine Funktion ist eine Gruppe von wiederverwendbarem Code, der an einer beliebigen Stelle in Ihrem Programm aufgerufen werden kann. Dadurch entfällt die Notwendigkeit, immer wieder denselben Code zu schreiben. Es hilft Programmierern beim Schreiben modularer Codes. Mit Funktionen kann ein Programmierer ein großes Programm in eine Reihe kleiner und verwaltbarer Funktionen unterteilen.

Wie jede andere erweiterte Programmiersprache unterstützt auch Solidity alle Funktionen, die zum Schreiben von modularem Code mithilfe von Funktionen erforderlich sind. In diesem Abschnitt wird erläutert, wie Sie Ihre eigenen Funktionen in Solidity schreiben.

Funktionsdefinition

Bevor wir eine Funktion verwenden, müssen wir sie definieren. Die gebräuchlichste Methode zum Definieren einer Funktion in Solidity ist die Verwendung vonfunction Schlüsselwort, gefolgt von einem eindeutigen Funktionsnamen, einer Liste von Parametern (die möglicherweise leer sind) und einem Anweisungsblock, der von geschweiften Klammern umgeben ist.

Syntax

Die grundlegende Syntax wird hier gezeigt.

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

Beispiel

Versuchen Sie das folgende Beispiel. Es definiert eine Funktion namens getResult, die keine Parameter akzeptiert -

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;
   }
}

Eine Funktion aufrufen

Um eine Funktion später im Vertrag aufzurufen, müssen Sie lediglich den Namen dieser Funktion wie im folgenden Code angegeben schreiben.

Versuchen Sie den folgenden Code, um zu verstehen, wie die Zeichenfolge in Solidity funktioniert.

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
   }
}

Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus .

Ausgabe

0: string: 3

Funktionsparameter

Bisher haben wir Funktionen ohne Parameter gesehen. Es gibt jedoch die Möglichkeit, beim Aufrufen einer Funktion verschiedene Parameter zu übergeben. Diese übergebenen Parameter können innerhalb der Funktion erfasst werden, und jede Manipulation kann über diese Parameter durchgeführt werden. Eine Funktion kann mehrere durch Komma getrennte Parameter annehmen.

Beispiel

Versuchen Sie das folgende Beispiel. Wir haben eine verwendetuint2strFunktion hier. Es braucht einen Parameter.

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
   }
}

Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus .

Ausgabe

0: string: 3

Die Rückgabeerklärung

Eine Solidity-Funktion kann optional sein returnErklärung. Dies ist erforderlich, wenn Sie einen Wert von einer Funktion zurückgeben möchten. Diese Anweisung sollte die letzte Anweisung in einer Funktion sein.

Wie im obigen Beispiel verwenden wir die Funktion uint2str, um einen String zurückzugeben.

In Solidity kann eine Funktion auch mehrere Werte zurückgeben. Siehe das folgende Beispiel -

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);
   }
}

Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus .

Ausgabe

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