Escopo Variável em Solidez
Neste artigo, veremos mais de perto os diferentes escopos de variáveis do Solidity com exemplos e como eles podem ser usados para criar contratos inteligentes mais robustos e seguros .
O escopo da variável refere-se às partes do código onde uma variável pode ser acessada.
Escopo da Variável de Solidez
No Solidity, as variáveis podem ter escopo global ou local . As variáveis globais são declaradas fora de qualquer função e podem ser acessadas de qualquer parte do código.
As variáveis locais, por outro lado, são declaradas dentro de uma função e só podem ser acessadas dentro dessa função.
O escopo local da variável Solidity é limitado à função na qual é definido, mas o escopo de uma variável de estado pode ser dividido em três tipos:
tipos | Visão geral |
Público | Uma variável de estado público pode ser acessada internamente e por meio de mensagens. Getters automáticos são gerados para variáveis de estado públicas. |
interno | Variáveis de estado só podem ser acessadas internamente a partir do contrato atual ou de contratos dele derivados. |
Privado | As variáveis de estado privadas só podem ser acessadas de dentro do contrato atual no qual são definidas, não em contratos derivados. |
O código a seguir demonstra o funcionamento de variáveis de estado públicas e internas :
Solidity Variable Scope Example: 1
Exemplo 1 Explicação
O exemplo acima consiste em três contratos diferentes, cada um demonstrando diferentes aspectos do Solidity :
O contrato SolidityTest define uma variável de estado pública mrx e uma variável de estado interna ample .
Também define uma função get_Value_Local_Variable_Contract1() que modifica o valor da variável mrx e a retorna.
O contrato SolidityTest1 cria uma instância de SolidityTest usando a palavra-chave new e define uma função public_variables_external_value() que retorna o valor da variável de estado pública mrx do contrato SolidityTest.
O contrato SolidityTest2 herda de SolidityTest e define uma função internal_variables_extended_contract() que modifica o valor da variável de estado interno ample e o retorna. Também define uma função local_variable_get_value() que define as variáveis locais mrx_1 e ample_1, as multiplica e retorna o produto.
Em resumo, este código demonstra os seguintes conceitos do Solidity:
Conceitos | Explicação |
Variáveis de Estado | Os contratos demonstram o uso de variáveis de estado públicas e internas no Solidity. As variáveis públicas podem ser acessadas interna e externamente, enquanto as variáveis internas só podem ser acessadas internamente no contrato e quaisquer contratos herdados dele. |
Modificando variáveis de estado | As funções get_Value_Local_Variable_Contract1() e internal_variables_extended_contract() modificam o valor das variáveis de estado em seus respectivos contratos. |
Acesso externo ao contrato | O contrato SolidityTest1 demonstra como criar uma instância de um contrato e acessar sua variável de estado pública de um contrato separado. |
Variáveis locais | A função local_variable_get_value() demonstra o uso de variáveis locais no Solidity, que são usadas para armazenar dados dentro de uma função e são destruídas quando a função retorna. |
Exemplo de escopo de variável de solidez: 2
Example
Exemplo 2 Explicação
No exemplo acima, o contrato SolidityTest define uma variável de estado pública mrx, uma variável de estado interna ample e uma variável de estado privada mr. Ele também define três funções: get_Public_value(), get_Internal_value() e get_Private_value(), que retornam os valores das variáveis de estado público, interno e privado, respectivamente.
O contrato SolidityTest1 cria uma instância de SolidityTest usando a palavra-chave new e define uma função get_public_variable_value_outside() que retorna o valor da variável de estado pública mrx do contrato SolidityTest. Isso demonstra como acessar variáveis de estado públicas de um contrato de outro contrato.
O contrato SolidityTest2 herda de SolidityTest e define uma função get_Internal_Variable_Value() que retorna o valor da variável de estado interno ample.
Isso demonstra como acessar variáveis de estado internas do contrato pai a partir do contrato filho.