Solidez - Variáveis

A solidez oferece suporte a três tipos de variáveis.

  • State Variables - Variáveis ​​cujos valores são armazenados permanentemente em um armazenamento de contrato.

  • Local Variables - Variáveis ​​cujos valores estão presentes até a função estar em execução.

  • Global Variables - Existem variáveis ​​especiais no namespace global usado para obter informações sobre o blockchain.

Solidity é uma linguagem digitada estaticamente, o que significa que o tipo de variável estadual ou local precisa ser especificado durante a declaração. Cada variável declarada sempre tem um valor padrão baseado em seu tipo. Não há conceito de "indefinido" ou "nulo".

Estado variável

Variáveis ​​cujos valores são armazenados permanentemente em um armazenamento de contrato.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData;      // State variable
   constructor() public {
      storedData = 10;   // Using State variable
   }
}

Variável Local

Variáveis ​​cujos valores estão disponíveis apenas dentro de uma função em que foram definidas. Os parâmetros da função são sempre locais para essa função.

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

Exemplo

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

Execute o programa acima usando as etapas fornecidas no capítulo Aplicativo Solidity First .

Resultado

0: uint256: 10

Variáveis ​​globais

Essas são variáveis ​​especiais que existem no espaço de trabalho global e fornecem informações sobre o blockchain e as propriedades da transação.

Nome Devoluções
blockhash (uint blockNumber) retorna (bytes32) Hash do bloco fornecido - funciona apenas para 256 blocos mais recentes, excluindo os atuais
block.coinbase (endereço a pagar) Endereço atual do mineiro
block.difficulty (uint) Dificuldade do bloco atual
block.gaslimit (uint) Limite de gás do bloco atual
block.number (uint) Número do bloco atual
block.timestamp (uint) Timestamp de bloco atual em segundos desde a época unix
gasleft () retorna (uint256) Gás restante
msg.data (bytes calldata) Calldata completa
msg.sender (endereço a pagar) Remetente da mensagem (chamador atual)
msg.sig (bytes4) Primeiros quatro bytes do calldata (identificador de função)
msg.value (uint) Número de wei enviado com a mensagem
agora (uint) Carimbo de data e hora do bloco atual
tx.gasprice (uint) Preço do gás da transação
tx.origin (endereço a pagar) Remetente da transação

Nomes de variáveis ​​de solidez

Ao nomear suas variáveis ​​no Solidity, mantenha as seguintes regras em mente.

  • Você não deve usar nenhuma das palavras-chave reservadas do Solidity como um nome de variável. Essas palavras-chave são mencionadas na próxima seção. Por exemplo, os nomes das variáveis ​​break ou boolean não são válidos.

  • Os nomes das variáveis ​​de solidez não devem começar com um numeral (0-9). Eles devem começar com uma letra ou um caractere de sublinhado. Por exemplo, 123test é um nome de variável inválido, mas _123test é válido.

  • Os nomes das variáveis ​​do Solidity diferenciam maiúsculas de minúsculas. Por exemplo, Nome e nome são duas variáveis ​​diferentes.