Solidität - Variablen
Solidity unterstützt drei Arten von Variablen.
State Variables - Variablen, deren Werte dauerhaft in einem Vertragsspeicher gespeichert sind.
Local Variables - Variablen, deren Werte vorhanden sind, bis die Funktion ausgeführt wird.
Global Variables - Im globalen Namespace sind spezielle Variablen vorhanden, mit denen Informationen zur Blockchain abgerufen werden.
Solidity ist eine statisch typisierte Sprache. Dies bedeutet, dass der Status oder der lokale Variablentyp während der Deklaration angegeben werden muss. Jede deklarierte Variable hat immer einen Standardwert, der auf ihrem Typ basiert. Es gibt kein Konzept von "undefiniert" oder "null".
Zustandsvariable
Variablen, deren Werte dauerhaft in einem Vertragsspeicher gespeichert sind.
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10; // Using State variable
}
}
Lokale Variable
Variablen, deren Werte nur innerhalb einer Funktion verfügbar sind, in der sie definiert sind. Funktionsparameter sind für diese Funktion immer lokal.
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10;
}
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return result; //access the local variable
}
}
Beispiel
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10;
}
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return storedData; //access the state variable
}
}
Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus .
Ausgabe
0: uint256: 10
Globale Variablen
Hierbei handelt es sich um spezielle Variablen, die im globalen Arbeitsbereich vorhanden sind und Informationen zu den Blockchain- und Transaktionseigenschaften enthalten.
Name | Kehrt zurück |
---|---|
blockhash (uint blockNumber) gibt (bytes32) zurück | Hash des angegebenen Blocks - funktioniert nur für 256 neueste, ausgenommen aktuelle Blöcke |
block.coinbase (Adresse zahlbar) | Aktuelle Block Miner-Adresse |
block.difficulty (uint) | Aktuelle Blockschwierigkeit |
block.gaslimit (uint) | Aktuelle Blockgasbegrenzung |
block.number (uint) | Aktuelle Blocknummer |
block.timestamp (uint) | Aktueller Blockzeitstempel als Sekunden seit der Unix-Epoche |
gasleft () gibt zurück (uint256) | Restgas |
msg.data (Bytes calldata) | Komplette Anrufdaten |
msg.sender (Adresse zahlbar) | Absender der Nachricht (aktueller Anrufer) |
msg.sig (bytes4) | Die ersten vier Bytes der Aufrufdaten (Funktionskennung) |
msg.value (uint) | Anzahl der mit der Nachricht gesendeten Wei |
jetzt (uint) | Aktueller Blockzeitstempel |
tx.gasprice (uint) | Gaspreis der Transaktion |
tx.origin (Adresse zahlbar) | Absender der Transaktion |
Namen von Solidity-Variablen
Beachten Sie beim Benennen Ihrer Variablen in Solidity die folgenden Regeln.
Sie sollten keines der reservierten Solidity-Schlüsselwörter als Variablennamen verwenden. Diese Schlüsselwörter werden im nächsten Abschnitt erwähnt. Beispielsweise sind break- oder boolesche Variablennamen ungültig.
Namen von Soliditätsvariablen sollten nicht mit einer Ziffer (0-9) beginnen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen. Beispielsweise ist 123test ein ungültiger Variablenname, _123test jedoch ein gültiger.
Bei Namen von Soliditätsvariablen wird zwischen Groß- und Kleinschreibung unterschieden. Zum Beispiel sind Name und Name zwei verschiedene Variablen.