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

相关推荐
baopixiaoz3 小时前
AI量化策略师|Web3 量化交易研究员
大数据·人工智能·python·区块链
Jiamiren21 小时前
WEEX:长鑫科技上市大涨,宇树科技合约同步走高,传统资产交易迎来新路径
人工智能·科技·区块链
黄焖鸡能干四碗1 天前
信息安全保障方案(Word文件)
大数据·网络·人工智能·架构·区块链
Web3李李2 天前
链游想要获得市场认可,核心从来不是极致去中心化
web3·去中心化·区块链·软件开发·链游开发
mykj15512 天前
稳定的DOO算力质押系统DAPP合约底层逻辑
web3·区块链·dapp·rwa·质押挖矿
大鱼>3 天前
以太坊Layer2扩容:Optimistic vs ZK-Rollup完整对比
区块链
汇策研习社3 天前
斐波那契均线交易体系:21/55/89三重均线趋势战法详解
大数据·经验分享·金融·区块链·fastbull
同花顺期货通3 天前
期货新手入门品种筛选:2026年低保证金高流动性品种深度解析
区块链
磐链科技3 天前
从Truffle到Hardhat:DApp开发框架的技术演进与工程化最佳实践
区块链
网渡科技3 天前
智能合约审计流程详解:如何在部署前发现高危漏洞
区块链·智能合约