在 solidity 世界中,为我们提供了用户定义类型的一种方法——枚举类型,主要运用在表征某一事物的状态转移场景或限制有限的状态。枚举体实现的状态转移有点类似于项目管理中的里程碑,必须做完前一件事,后面的才可以运行。

实验目的

掌握枚举类型定义的要点;理解枚举对实际生产的作用;明白枚举类型返回值的含义。

实验要求

1、下面合约,存在两处错误,结合相关知识进行正确修改。

2、思考定义enum时,成员对象能不能为空?成员对象能不能重复出现?

3、编译部署合约,调用getChoice方法,查看返回值的类型及输入参数的限制条件。

4、思考函数getDefaultChoice的返回值是多少?调用函数getDefaultChoice,检查它的返回值。

以下是本次实验所使用到的测试代码,请使用remix编辑器完成该实验

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.16 <0.8.0;
 
contract enumTest {
    enum ActionChoices { GoLeft, GoRight, GoStraight, SitStill, 张三};
    ActionChoices public _choice;
    ActionChoices constant defaultChoice = ActionChoices.GoStraight;
 
    function setGoStraight(ActionChoices choice) public {
        _choice = choice;
    }
    function getChoice() public view returns (ActionChoices) {
        return _choice;
    }
    function getDefaultChoice() public returns (uint) {
        return uint(defaultChoice); 
    }
}

下面是本次实验所配套的视频教程: