description |
---|
Funções são usadas para encapsular trechos de código para serem chamados/invocados sempre que necessário, evitando assim a necessidade de reescreve-los. |
- Possuem uma palavra chave de definição.
- Um nome para ser invocada.
- Podem receber parâmetros externos.
- Possuem um parâmetro de visibilidade.
- Possuem um identificador de estado.
- Podem receber modificadores.
- Podem ser págaveis (receber eth/cripto).
- Podem ou não retornar dados.
Essa estrutura pode variar, dependendo do contexto dessa função algumas palavras-chave estarão implícitas por padrão da linguagem.
Funções podem receber parâmetros externos, veja a função abaixo.
Por enquanto preste atenção somente nos parâmetros dentro dos parêntesis (uint a , uint b). Esse trecho de código indica que essa função recebe dois números, um está na variável 'a' e outro está na variável 'b'.
Funções também podem funcionar sem paraêmtros externos, como é o caso dessa função à baixo que somente retorna o número do bloco atual.
Parâmetros de visibilidade definem como essa função poderá ser acessada.
Quando uma função é executa ela pode ou não alterar dados que estão guardados na blockchain. Para cada caso à uma palavra chave que define as permissões e possibilidades dessa função.
pure é bastante usado para fazer calculos e retornar resultados.
Há muitos casos de uso para modificadores mas um dos mais comuns é definir permissões e restrições no contrato para que somente o administrador possa fazer algumas coisas.
Nesse caso temos uma função chamada somenteAdminAlteraIdade que só poderá ser executada se o modificador somenteadm retornar um valor true. Esse modificador verifica se o endereço que chamou o contrato é o endereço administrador, se sim irá retornar true e a função será executada.
Algumas funções podem receber eth e outros tokens e para isso devem levar a palavra chave payable.
Funções com parâmetro de estado view não podem ser pagáveis.
Para que uma função retorne algum dado é preciso especificar o tipo de dado que será retornado, isso é feito através do parâmetro returns é diferente da palavra chave return que é usada para retornar o dado efetivamente.