【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,一切准备就绪,开始我们的学习之旅吧,如果有问题,可以到这里提问

已有 0 用户参与0
0 : 0
+1已打分
电子邮箱
  • 程序咖巴士
联系我们
  • 扫一扫,联系我们