先来一段代码:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;
contract test{
enum ActionChoices{Goleft,GoRight,GoStraight,GoStill}
ActionChoices choice;
ActionChoices constant defaultChoice = ActionChoices.Goleft;
function setGoStraight() public {
choice = ActionChoices.GoStraight;
}
function setGoStill() public {
choice = ActionChoices.GoStill;
}
//由于枚举类型不属于|ABI|的一部分,因此对于氖来自solidity外部调用,
//getChoice 的签名会自动被改为getChoice() returns(uint8);
function getChoice() public view returns(ActionChoices){
return choice;
}
function getDefaultChoise() public pure returns(uint){
return uint(defaultChoice);
}
}
一、枚举定义
enum ActionChoices{Goleft,GoRight,GoStraight,GoStill}
二、设置默认值
ActionChoices constant defaultChoice = ActionChoices.Goleft;
三、定义四个方法,两个设置,一个是获得当前状态,一个是默认状态;
获得默认状态的,不会由被设置了而改变;
由于默认设置为goLeft,所以GetDefaultChoice时总是显示枚举的第0个的内容;
这个跟大多数语言一样,都是从0开始编码的。所有即使设置了goStill了,在getChoice时显示为3;
网友评论