Solidity0.8.0-枚举

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.3;

contract Enum {
    enum Status {//枚举和结构体都是一种类型
        None,
        Pending,
        Shipped,
        Completed,
        Rejected,
        Canceled
    }

    Status public status;//枚举类型定义一个变量

    struct Order {//将枚举写在结构体内部
        address buyer;
        Status status;
    }

    Order[] public orders;//类型定义一个数组,这几种类型可以反复嵌套使用

    function get() view external returns (Status) {//这个变量是枚举变量,它的返回值已枚举类型返回,不会返回字符串,会返回当前变量所在的索引
        return status;
    }

    function set(Status _status) external {//设置枚举类型的状态变量
        status = _status;
    }

    function ship() external {//将枚举类型的状态变量修改为指定的一个值
        status = Status.Shipped;
    }

    function reset() external {//将枚举类型的状态变量恢复到默认值,默认值就是第一个字段
        delete status;
    }
}
posted @ 2022-07-29 17:26  ZaleSwfit  阅读(79)  评论(0编辑  收藏  举报