Reverts Explícitos
Parte da seção Fundamentos do Journey de Solidity da Coddy. Lição 47 de 53.
Um ramo if pode chamar revert(message) para rejeitar explicitamente um caso inválido. Isso é útil quando a condição de rejeição é mais fácil de ler do que o seu oposto. Coloque o trabalho normal após a proteção para que ele seja executado somente com uma entrada aceitável.
As instruções neste trecho são executadas dentro da função main fornecida.
uint256 chosen = 4;
if (chosen > 6) { revert("Choice too large"); }
console.log(chosen + 2);Quatro não excede seis, então o ramo de rejeição é ignorado. A execução chega à chamada do console. Um revert explícito rejeita a chamada assim como um require que falha; ele não é uma forma de exibir um resultado normal.
revert encerra a chamada atual com falha, em vez de continuar normalmente.
Desafio
FácilRejeite valores acima de 50 com revert e uma mensagem útil. Para entradas aceitas, imprima 50 menos o valor. Todos os testes de saída estão no intervalo.
Os testes passam argumentos para main nesta ordem: uint256 value. Cada teste começa com o estado do contrato renovado.
Use console.log para a saída solicitada. Imprima apenas os valores solicitados, um por linha, sem rótulos adicionais, a menos que a tarefa os especifique.
Experimente você mesmo
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 value) external view {
// Escreva sua solução aqui.
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
10Regras de Contratos
Exigir CondiçõesReverts ExplícitosEventosVisibilidade e PrivacidadeAtualizações Verificadas2Variáveis e Tipos
Inteiros sem sinalEntradas e saídasInteiros com sinalValores booleanosStrings na memóriaCartão de perfil5Funções
Parâmetros de FunçãoRetorno de ValoresFunções PurasChamadas AuxiliaresCálculos ReutilizáveisPratique por conta própria: Playground de Solidity