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