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.