【2022 元宇宙基础NFT之Solidity OOP编程第19篇】3分钟了解Solidity Types – Solidity 枚举(Enums)
案例
下面的代码是我对官方案例作了简单的修改而成。ActionChoices
就是一个自定义的整型,当枚举数不够多时,它默认的类型为uint8
,当枚举数足够多时,它会自动变成uint16
,下面的GoLeft == 0
,GoRight == 1
, GoStraight == 2
, SitStill == 3
。在setGoStraight
方法中,我们传入的参数的值可以是0 - 3
当传入的值超出这个范围时,就会中断报错。
-
type(ActionChoices).max
返回枚举最大值。 -
type(ActionChoices).min
返回枚举最小值。
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.8;
contract test {
enum ActionChoices { GoLeft, GoRight, GoStraight, SitStill }
ActionChoices choice;
ActionChoices constant defaultChoice = ActionChoices.GoStraight;
function setGoStraight() public {
choice = ActionChoices.GoStraight;
}
// choice get方法
function getChoice() public view returns (ActionChoices) {
return choice;
}
// 读取默认的枚举值
function getDefaultChoice() public pure returns (uint) {
return uint(defaultChoice);
}
// 获取枚举的最大值
function getLargestValue() public pure returns (ActionChoices) {
return type(ActionChoices).max;
}
// 获取枚举的最小值
function getSmallestValue() public pure returns (ActionChoices) {
return type(ActionChoices).min;
}
}
⚠️:ok,一切准备就绪,开始我们的学习之旅吧,如果有问题,可以到这里提问。