Skip to content

枚举

Solidity 中,枚举类型是一种用户定义的类型,它可用于定义有限的一组可能的值。

枚举类型的实现很简单,其定义形式为:enum {EnumName} {Value1, Value2,....,Valuen}

示例

下面是一个基本的 Solidity 枚举类型的声明和使用:

solidity
pragma solidity ^0.8.0;

contract EnumDemo {
   enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
   Days public today;

   function setToday(Days _today) public {
      today = _today;
   }
   
   function getToday() public view returns (Days) {
      return today;
   }
}

在这个示例中,我们定义一个名为 Days 的枚举类型,其中包含一周七天。然后,我们定义了一个公共的 today 变量,它是 Days 类型。

我们还定义了一个公共的 setToday 函数,该函数用于更改 today 值。

最后,我们定义了一个公共的 getToday 函数,用于获取当前的 today 值。

接下来,我们可以使用以下代码来测试我们的程序功能:

solidity
contract TestEnum {
   EnumDemo public obj = new EnumDemo();

   function testToday() public {
      obj.setToday(EnumDemo.Days.Monday);
      assert(obj.getToday() == EnumDemo.Days.Monday);
   }
}

在上面的示例代码中,我们声明了一个名为 TestEnum 的合约,并创建了一个 EnumDemo 的对象。

然后,我们通过 setToday 函数设置 today 的值为 Monday,并使用assert函数验证today的值是否为 Monday

如果它是,那么 assert 函数将返回 true