Menu
CoddyTech

枚举

本课属于 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 开始,按声明顺序递增。

challenge icon

挑战

简单

声明枚举 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 {
        // 在这里编写你的答案。
    }
}
quiz icon自我测试

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

基础知识中的所有课

自己练习: Solidity 在线编辑器