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;
}
}