Solidez - Funções puras

Funções puras garantem que não leiam ou modifiquem o estado. Uma função pode ser declarada comopure. As instruções a seguir, se presentes na função, são consideradas como leitura do estado e o compilador lançará um aviso nesses casos.

  • Lendo variáveis ​​de estado.

  • Endereço de acesso (this) .balance ou <address> .balance.

  • Acessando qualquer variável especial do bloco, tx, msg (msg.sig e msg.data podem ser lidos).

  • Chamar qualquer função não marcada como pura.

  • Usando assembly embutido que contém certos opcodes.

Funções puras podem usar as funções revert () e require () para reverter possíveis alterações de estado se ocorrer um erro.

Veja o exemplo abaixo usando uma função de visualização.

Exemplo

pragma solidity ^0.5.0;

contract Test {
   function getResult() public pure returns(uint product, uint sum){
      uint a = 1; 
      uint b = 2;
      product = a * b;
      sum = a + b; 
   }
}

Execute o programa acima usando as etapas fornecidas no capítulo Aplicativo Solidity First .

Resultado

0: uint256: product 2
1: uint256: sum 3