Reverts explicites
Fait partie de la section Fondamentaux du Journey Solidity de Coddy. Leçon 47 sur 53.
Une branche if peut appeler revert(message) pour rejeter explicitement un cas non valide. Cela est utile lorsque la condition de rejet est plus facile à lire que son opposé. Place le traitement normal après la garde afin qu’il ne s’exécute que pour une entrée acceptable.
Les instructions de cet extrait s’exécutent dans la fonction main fournie.
uint256 chosen = 4;
if (chosen > 6) { revert("Choice too large"); }
console.log(chosen + 2);Quatre ne dépasse pas six, donc la branche de rejet est ignorée. L’exécution atteint l’appel à la console. Un revert explicite rejette l’appel tout comme un require échoué ; ce n’est pas un moyen d’afficher un résultat normal.
revert termine l’appel actuel avec un échec au lieu de poursuivre normalement.
Défi
FacileRejetez une valeur supérieure à 50 avec revert et un message utile. Pour une entrée acceptée, affichez 50 moins la valeur. Tous les tests de sortie sont dans la plage.
Les tests transmettent les arguments à main dans cet ordre : uint256 value. Chaque test commence avec un état de contrat vierge.
Utilisez console.log pour la sortie demandée. Affichez uniquement les valeurs demandées, une par ligne, sans libellés supplémentaires, sauf si la tâche les spécifie.
Essayez vous-même
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 value) external view {
// Écrivez votre solution ici.
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
10Règles des contrats
Exiger des conditionsReverts explicitesÉvénementsVisibilité et confidentialitéMises à jour vérifiées2Variables et types
Entiers non signésEntrées et sortiesEntiers signésValeurs booléennesChaînes en mémoireCarte de profil5Fonctions
Paramètres des fonctionsValeurs de retourFonctions puresAppels de fonctions auxiliairesCalculs réutilisablesEntraînez-vous par vous-même : Playground Solidity