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

相关推荐
2601_961963387 小时前
技术解剖:哈希值、区块链与CA认证如何守护电子合同安全?
网络·人工智能·安全·区块链·智能合约·政务
2601_961963387 小时前
从“电子化”到“自动化”:2026年智能合约与电子合同融合的技术逻辑与法律适配
网络·人工智能·区块链·智能合约·政务
2601_956319887 小时前
期货夜盘无人值守监控什么:断线、无成交与拒单信号
python·区块链
CTA终结者7 小时前
期货量化目标仓和净持仓对不齐:天勤 TargetPosTask 与 pos 偏差排查
python·区块链
2601_955505258 小时前
自然人身份确权可信基础设施赋能 DID 身份合规
运维·金融·区块链·健康医疗·智能硬件·教育电商·政务
c_lb728813 小时前
期货主连研究具体月实盘:KQ 连续与标的月份偏差怎么记
python·区块链
区块链小八歌15 小时前
稳定资产的“乐高”新解法:拆解 Berachain Clearstar HONEY Vault
区块链
c_lb728815 小时前
涨跌停与流动性变差还要不要挂单:quote 涨跌停字段与熔断思路
python·区块链
ellenwan202616 小时前
期货量化尾盘没清仓:天勤 trading_time 过滤与收盘前平仓
python·区块链
Jiamiren16 小时前
JU交易所资金提取问题引发关注:普通用户如何验证交易所储备金真实性?
区块链