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.