显式回滚
本课属于 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 会以失败结束当前调用,而不是正常继续执行。
挑战
简单如果值大于 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 {
// 在这里编写你的答案。
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Solidity 在线编辑器