23-Solidity8.0-枚举

393 阅读1分钟

枚举类型是在Solidity中的一种用户自定义类型。

他可以显示的转换与整数进行转换,但不能进行隐式转换。显示的转换会在运行时检查数值范围,如果不匹配,将会引起异常。

枚举类型应至少有一名成员。我们来看看下面的例子吧。

image.png

源码:

pragma solidity ^0.8.7;

contract Enum{
    enum Status {
        None,
        Padding,
        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;
    }
}