Solidità - Variabili
La solidità supporta tre tipi di variabili.
State Variables - Variabili i cui valori sono memorizzati in modo permanente in una memoria di contratti.
Local Variables - Variabili i cui valori sono presenti fino all'esecuzione della funzione.
Global Variables - Esistono variabili speciali nello spazio dei nomi globale utilizzato per ottenere informazioni sulla blockchain.
La solidità è un linguaggio tipizzato staticamente, il che significa che il tipo di variabile locale o di stato deve essere specificato durante la dichiarazione. Ogni variabile dichiarata ha sempre un valore predefinito basato sul suo tipo. Non esiste il concetto di "undefined" o "null".
Variabile di stato
Variabili i cui valori sono memorizzati in modo permanente in una memoria di contratti.
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10; // Using State variable
}
}
Variabile locale
Variabili i cui valori sono disponibili solo all'interno di una funzione in cui è definita. I parametri della funzione sono sempre locali rispetto a quella funzione.
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
}
}
Esempio
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
}
}
Eseguire il programma precedente utilizzando i passaggi forniti nel capitolo Solidity First Application .
Produzione
0: uint256: 10
Variabili globali
Queste sono variabili speciali che esistono nello spazio di lavoro globale e forniscono informazioni sulla blockchain e sulle proprietà delle transazioni.
Nome | ritorna |
---|---|
blockhash (uint blockNumber) restituisce (bytes32) | Hash del blocco specificato: funziona solo per i 256 blocchi più recenti, esclusi quelli correnti |
block.coinbase (indirizzo da pagare) | Indirizzo attuale del block miner |
block.difficulty (uint) | Attuale difficoltà di blocco |
block.gaslimit (uint) | Limite gas blocco corrente |
block.number (uint) | Numero di blocco corrente |
block.timestamp (uint) | Timestamp del blocco corrente espresso in secondi dall'epoca unix |
gasleft () restituisce (uint256) | Gas rimanente |
msg.data (byte calldata) | Calldata completa |
msg.sender (indirizzo da pagare) | Mittente del messaggio (chiamante corrente) |
msg.sig (bytes4) | Primi quattro byte del calldata (identificatore di funzione) |
msg.value (uint) | Numero di wei inviati con il messaggio |
ora (uint) | Timestamp del blocco corrente |
tx.gasprice (uint) | Prezzo del gas della transazione |
tx.origin (indirizzo da pagare) | Mittente della transazione |
Nomi variabili di solidità
Durante la denominazione delle variabili in Solidity, tieni a mente le seguenti regole.
Non utilizzare nessuna delle parole chiave riservate di Solidity come nome di variabile. Queste parole chiave sono menzionate nella sezione successiva. Ad esempio, i nomi di variabili break o booleani non sono validi.
I nomi delle variabili di solidità non devono iniziare con un numero (0-9). Devono iniziare con una lettera o un trattino basso. Ad esempio, 123test è un nome di variabile non valido ma _123test è uno valido.
I nomi delle variabili di solidità fanno distinzione tra maiuscole e minuscole. Ad esempio, Nome e nome sono due variabili diverse.