Pular para o conteúdo
0%

O que são funções Solidity?

Alchemy team headshot

Escrito por Alchemy

Publicado em 4 de outubro de 20224 min de leitura

Existem vários tipos de funções em Solidity, incluindo view functions, pure functions, funções especiais e fallback functions. As funções também podem ser modificadas com um atributo de visibilidade de função: public, external, internal e private. Este artigo apresentará os tipos de funções em Solidity, sua sintaxe, como ler funções e a visibilidade.

O que são funções em Solidity?

Funções em Solidity são módulos de código autocontidos que realizam uma tarefa específica. Assim como outras linguagens de programação web3, Solidity permite que o desenvolvedor escreva código modular usando funções para eliminar a redundância de reescrever o mesmo trecho de código. Em vez disso, os devs podem chamar uma função no programa quando necessário.

Como escrever e ler uma função em Solidity

Para escrever uma função em Solidity, os desenvolvedores precisam estruturá-la de acordo com sua sintaxe adequada, garantindo que os componentes básicos estejam presentes para que a função possa executar corretamente.

Sintaxe de função em Solidity

Use a sintaxe a seguir para criar sua função em Solidity, como mostrado no exemplo abaixo:

  1. Defina a função com a palavra-chave function
  2. Crie um nome para a função, que seja único e não coincida com nenhuma das palavras-chave reservadas
  3. Liste quaisquer parâmetros contendo o nome e o tipo de dado do parâmetro, ou não inclua parâmetros extras
  4. Crie um bloco de instruções cercado por chaves

Nota: eventos em Solidity são declarados como funções. Eventos e funções são ambos essenciais para o trabalho de alto nível em dApps.

A imagem abaixo mostra os três componentes principais de uma função em Solidity:

  1. Nome da função
  2. Tipo da função
  3. Tipos de retorno
Um exemplo de função em Solidity
Um exemplo de função em Solidity

Quais são os diferentes tipos de funções em Solidity?

Existem vários tipos de funções em Solidity que abordaremos nesta seção, incluindo view functions, pure functions, funções especiais e fallback functions.

1. View functions

Em Solidity, view functions são somente leitura e não podem alterar as variáveis de estado definidas em um smart contract. A sintaxe de uma view function é a seguinte:

2. Pure functions

Uma pure function declara que nenhuma variável de estado será alterada ou lida. Normalmente, pure functions servem para algum utilitário ou cálculo comum. A sintaxe de uma pure function é a seguinte:

3. Funções especiais

Solidity tem algumas funções especiais que você pode usar ao desenvolver um smart contract. Getter e receive functions são funções payable importantes para smart contracts em Solidity.

Getter function

Variáveis de estado definidas como public têm uma getter function que é criada automaticamente pelo compilador. A função tem o mesmo nome da variável e possui visibilidade external.

Receive ether function

Um contrato pode ter no máximo uma receive function. Uma receive function não pode ter argumentos, não é capaz de retornar valores e deve ter visibilidade external e mutabilidade de estado payable.

Uma receive function é executada quando uma chamada ao contrato envia Ether e não especifica nenhuma função. Essa função é declarada da seguinte forma:

4. Fallback function

Em Solidity, uma fallback function é uma função external sem nome, argumentos ou valores de retorno. Fallback functions são executadas quando um identificador de função não corresponde a nenhuma das funções disponíveis em um smart contract, ou se nenhum dado foi fornecido junto com a chamada da função.

O que é sobrecarga de função (function overloading)?

A sobrecarga de função ocorre quando você tem múltiplas definições para o mesmo nome de função dentro do mesmo escopo. A definição da função deve diferir uma da outra pelos tipos e/ou pelo número de argumentos na lista de argumentos. Você não pode sobrecarregar declarações de função que diferem apenas pelo tipo de retorno.

Como o Vyper lida com a sobrecarga de função de forma diferente do Solidity?

Diferente do Solidity, o Vyper, uma linguagem pythonic baseada em Solidity, não permite sobrecarga de função. Tentar fazer sobrecarga de função no Vyper resultará em um erro de "Duplicate function or event name".

O que significa visibilidade de função?

Especificar a visibilidade de função nos permite controlar quais entidades podem chamar funções dentro do smart contract. Existem três tipos de chamadores:

  1. O contrato principal
  2. Um contrato derivado (ou seja, que herda) do contrato principal
  3. Um terceiro

A visibilidade de função ajuda você a controlar qual dos chamadores acima pode executar a função. Existem quatro tipos de visibilidade de função:

  1. Public
  2. External
  3. Internal
  4. Private

A acessibilidade das funções diminui de External para Private: funções public são as mais acessíveis e funções private são as menos acessíveis.

External vs. public

External e public são as duas visibilidades de função que podem ser chamadas de fora do contrato em que são definidas. External significa que a função pode ser chamada exclusivamente por outros contratos ou por Externally Owned Accounts (EOA). Public significa que a função pode ser chamada externamente ou de dentro do próprio contrato.

Internal vs. private

Ao contrário de external e public, internal e private impedem que partes externas acessem a função. Para uma função private, apenas funções dentro do mesmo contrato podem chamá-la. Para uma função internal, funções dentro do mesmo contrato ou funções dentro de contratos derivados podem chamá-la.

Continue aprendendo sobre funções em Solidity

Este artigo apresentou a você as funções em Solidity. Para continuar aprendendo, inscreva-se no Ethereum Developer Bootcamp da Alchemy University para ter acesso a um curso intensivo gratuito e assíncrono de Solidity com duração de 7 semanas. Se os desenvolvedores forem novos no desenvolvimento em geral, o curso intensivo de JavaScript de 3 semanas da Alchemy University é um ótimo pré-requisito antes de iniciar um bootcamp de Ethereum.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.