
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
// 学习枚举与结构体的操作
contract meiju {
//先定义一个枚举的数据状态,一般只有true和felas,多种状态就需要我们自己定义
enum mystart{
nuon,//假定无状态,枚举的默认值就是你设置的第一个值
ping,//假定进行中
srues,//假定逻辑处理完成
comping//假定完成后已提交到链完成
}
//跟php一个鸟样,new一下
mystart public start;
//再定义一个结构体,用于套用状态
struct mystruct{
address user;
mystart start;
}
//new后才能使用
mystruct[] public my;
//查询 直接返回状态,返回的是索引
function get() external view returns (mystart){
return start;
}
//修改状态 这里传递的实际是索引,int类型 但是我们定义了状态类型,他会自己转换int
function set(mystart zhuangtaiIndex) external {
start \= zhuangtaiIndex;
}
//设置状态
function setzt() external {
start \= mystart.comping;
}
//重置,就是删除整个的,恢复状态到none
function delAll() external {
delete start;
}
//状态修改完后,存储到结构体中
function server() external {
my.push(mystruct(msg.sender,start));
}
}