Embora você já tenha visto vários desses artigos, eu gostaria de repassar brevemente as principais palavras-chave que você pode encontrar ao escrever um código em Solidity.
Pode vir naturalmente se você tiver alguma experiência com outras linguagens de programação, como C# por exemplo. No entanto, é, no mínimo, bom resumir brevemente as principais palavras-chave para você entender seu significado e ficar confortável em usá-las. É muito bom estar familiarizado com essas palavras, a fim de escrever um código seguro. Portanto, decidi preparar tudo e dar alguns exemplos.
Sumário
1 . External
2 . Private
3 . Internal
4 . Public
5 . View
6 . Pure
External
External (externa) é uma das palavras-chave relativas à visibilidade da função que determina quem tem acesso a ela. Apresentarei as diferenças abaixo, porém externa significa que a função só pode ser chamada do exterior da função. Não é possível que tal função possa ser chamada de dentro do contrato inteligente.
Note que a função plus (mais) não pode acessar a função externa (addition ou adição).
O código declara uma variável uint e a função externa addition e retorna a soma dos dois números de entrada e um uint. Na função plus, tentamos usar a função additional, porém como ela é declarada como externa, não temos acesso a ela de dentro do contrato, mas apenas de fora.
Private
Uma função private (privada) é aquela que só podemos chamar de dentro do contrato e é por convenção nomeada com um sublinhado no início. Caso você não especifique nenhuma visibilidade à palavra-chave, a função privada é usada como padrão.
Declaração de função privada na IDE do Remix
Após a implantação do contrato, a função privada não pode ser acessada de fora.
Criamos uma função _addition como privada. Nós implantamos o contrato e normalmente, teríamos um botão com o nome da função para usar, porém, neste caso, não há nenhum, pois a função é privada e inacessível do exterior e não podemos chamá-la no contrato.
Internal
Internal (interna) é semelhante às funções privadas, porém, as funções internas podem ser herdadas e utilizadas por instâncias, ao contrário das privadas. Apesar de serem menos restritivas, as funções internas não podem ser chamadas do exterior.
Declarando a função interna. IDE do Remix
Public
A menos restritiva é a public (pública). Ela declara que as funções são acessíveis de fora do contrato e também dentro do contrato. Ao escolher qual visibilidade usar, o melhor caminho é ir com o acesso mais restritivo possível. Também falei sobre privacidade como uma funcionalidade. O código do contrato é a partir da definição da blockchain visível, uma vez que a rede é transparente.
View
A palavra-chave View (visualizar) é usada em uma função na qual não se modifica o estado. Isto significa que você não está, por exemplo, enviando Ethereum, modificando variáveis de estado, ou emitindo eventos. Você usa a palavra-chave View quando simplesmente deseja que a função exiba algo sem interferir/mudar nada mais no código.
Não estamos fazendo nenhuma mudança, pois a função cria sua própria variável.
O exemplo mostra o que significa não interferir no código fora da função em questão. Ele não altera o status ou o valor de nenhuma variável que esteja fora da função. Criamos a soma da variável e lhe atribuímos um novo valor - entretanto, essa variável foi certamente criada apenas no escopo da função. A função em si não muda nenhuma variável que esteja fora dela. No final, o x e y podem ser declarados fora da função e o caso se mantém.
Não faz nenhuma mudança, apenas usa/lê variáveis declaradas.
As funções view são aquelas que exibem um valor que já está armazenado em algum lugar, ou que é calculado dentro de uma função sem alterar nenhuma variável externa. Se você tentasse alterar o valor fora, o compilador lhe informaria um erro.
Pure
A palavra-chave pure vai um pouco mais longe ao restringir o acesso, pois é usada com funções que não apenas não mudam ou modificam o estado, mas também a função não lê nenhuma variável de estado externa. A função pure, entretanto, pode tomar valores como parâmetros. É usada principalmente para alguns cálculos e tem quase a mesma sintaxe que as funções view. Usando os exemplos acima, podemos escrever este código.
As variáveis usadas são declaradas dentro de uma função pure, não lidas de fora do escopo.
A sintaxe abaixo, no entanto, está causando um erro, pois a função está tentando ler variáveis de estado de fora.
Uma função pure não pode ler nenhuma variável que não seja nem parâmetro nem declarada dentro da função.
Aqui, não estamos lendo nenhum valor externo, pois os declaramos dentro da função. Também podemos tomar os valores como parâmetros, desta forma, e nada muda. Também uma nota no final, a função pure inclui a palavra-chave "view" e acrescenta a restrição à leitura de variáveis. Portanto, quando você usa "pure", não precisa (e na maioria das vezes o compilador lhe dirá) usar a palavra-chave "view".
Uma função pure pode tomar variáveis como parâmetros.
Isso é tudo por mim. Espero que isso o ajude um pouco e estou ansioso para vê-lo no Learn DeFi novamente!
Esse artigo foi escrito por TKMB e traduzido por Fátima Lima. O original pode ser lido aqui.
Top comments (0)