枚举
本课属于 Coddy Solidity 学习旅程的“基础知识”单元。第 44 课,共 53 课。
枚举定义了一小组有名称的选项。按顺序声明枚举成员,然后使用 TypeName.MemberName 引用某个成员。第一个成员的数值为零,下一个成员的数值为一,以此类推。有名称的选项比不加说明的数字更容易理解状态。
在合约作用域中声明:
enum Phase { Waiting, Packing, Complete }在提供的 main 函数中使用它:
Phase phase = Phase.Packing;
console.log(uint256(phase));这个声明列出了 Waiting、Packing 和 Complete。Packing 是第二个成员,因此会转换为 1。将任意数字转换为枚举时,如果数字超出枚举定义的范围,转换可能会失败,所以这里要使用具名成员。
枚举成员的数值从 0 开始,按声明顺序递增。
挑战
简单声明枚举 Mode,其中依次包含 Idle、Running 和 Finished。active 为 true 时选择 Running,否则选择 Idle,并打印数值。
测试会按以下顺序向 main 传递参数:bool active。每项测试都会从全新的合约状态开始。
使用 console.log 输出要求的内容。只打印要求的值,每行一个,不要添加额外标签,除非任务有要求。
亲手试试
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(bool active) external view {
// 在这里编写你的答案。
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Solidity 在线编辑器