Menu
CoddyTech

显式回滚

本课属于 Coddy Solidity 学习旅程的“基础知识”单元。第 47 课,共 53 课。

if 分支可以调用 revert(message) 来明确拒绝无效情况。当拒绝条件比它的反面更容易理解时,这样做很有用。将正常操作放在守卫之后,这样只有输入有效时才会运行。

这段代码中的语句在提供的 main 函数中运行。

uint256 chosen = 4;
if (chosen > 6) { revert("Choice too large"); }
console.log(chosen + 2);

四没有超过六,因此会跳过拒绝分支。执行会到达控制台调用处。显式的 revert 会像失败的 require 一样拒绝这次调用;它不能用来打印普通结果。

revert 会以失败结束当前调用,而不是正常继续执行。

challenge icon

挑战

简单

如果值大于 50,就使用 revert 拒绝,并提供有用的消息。对于接受的输入,输出 50 减去该值。所有输出测试的值都在范围内。

测试按以下顺序向 main 传入参数:uint256 value。每个测试都会从全新的合约状态开始。

使用 console.log 输出要求的内容。每行只输出要求的值,不要添加额外标签,除非任务有说明。

亲手试试

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
    function main(uint256 value) external view {
        // 在这里编写你的答案。
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Solidity 在线编辑器