3分钟Solidity: 3.3 Enum枚举

如需获取本内容的最新版本,请参见 Cyfrin.io 上的 Enum(代码示例)

Solidity支持枚举类型,它们非常适合用于建模选择项和跟踪状态。 枚举可以在合约外部声明。

solidity 复制代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

contract Enum {
    // 表示运输状态的枚举
    enum Status {
        Pending,
        Shipped,
        Accepted,
        Rejected,
        Canceled
    }

    // 默认值是类型定义中列出的第一个元素,本例中为"Pending"
    Status public status;

    // 返回无符号整数
    // Pending  - 0
    // Shipped  - 1
    // Accepted - 2
    // Rejected - 3
    // Canceled - 4
    function get() public view returns (Status) {
        return status;
    }

    // 通过将无符号整数传递到输入来更新状态
    function set(Status _status) public {
        status = _status;
    }

    // 你可以像这样更新到特定的枚举
    function cancel() public {
        status = Status.Canceled;
    }

    // 删除会将枚举重置为其第一个值,0
    function reset() public {
        delete status;
    }
}

Remix Lite 尝试一下

声明和导入枚举

声明枚举的文件

solidity 复制代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
// 这是保存的'EnumDeclaration.sol'

enum Status {
    Pending,
    Shipped,
    Accepted,
    Rejected,
    Canceled
}

Remix 尝试一下

导入上述枚举的文件

solidity 复制代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

import "./EnumDeclaration.sol";

contract Enum {
    Status public status;
}

Remix Lite 尝试一下


END

相关推荐
程序员李程峰3 小时前
基础知识⑤ERC-20、BEP-20 和TRC-20 这三种流行的加密代币标准
web3·去中心化·区块链·智能合约·同态加密·共识算法·信任链
m0_380167143 小时前
CoinGlass API 好用吗?(2026深度评估)
ai·区块链
长安链开源社区8 小时前
动手开发 | 如何通过k8s部署长安链
云原生·容器·kubernetes·区块链
长安链开源社区11 小时前
长安链开发大赛决赛入围名单揭晓
web3·区块链·共识算法
m0_3801671412 小时前
加密货币数据 API 怎么选?(2026 全面指南)
区块链
程序员李程峰12 小时前
基础知识——各种钱包之间的联系与区别
web3·去中心化·区块链·智能合约·同态加密·零知识证明·信任链
程序员李程峰12 小时前
基础知识①区块链钱包基础
去中心化·区块链·智能合约·同态加密·共识算法·信任链·分布式账本
程序员李程峰12 小时前
基础知识②区块链的链是什么
web3·去中心化·区块链·智能合约·同态加密·共识算法·信任链
深念Y12 小时前
当加密遇见分布式:Web3、去中心化与元宇宙的底层逻辑
分布式·web3·去中心化·区块链·元宇宙·加密·价值
区块block1 天前
三分钟,快速了解区块链技术!
区块链