Solidity 枚举 enum

solidity 的枚举类型 enum 是一种用户自定义类型,用于表示多种状态。

枚举类型 enum 内部就是一个自定义的整型,默认的类型为uint8,当枚举数足够多时,它会自动变成uint16

枚举类型 enum可以与整数进行显式转换,但不能进行隐式转换。显示转换会在运行时检查数值范围,如果不匹配,将会引起异常。

枚举类型 enum 至少应该有一名成员。

示例

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SolidityTest {
   enum Status { 
      None,
      Pending,
      Completed,
      Canceled
   }

   Status public status;

  // 获取状态
   function getStatus() external view returns(Status){
      return status;
   }

  // 设置状态
   function setStatus(Status _status) external{
      status = _status;
   }

  // 设置完成状态
   function setCompleted() external{
      status = Status.Completed;
   }
}

Solidity允许类型之间进行隐式转换和显式转换。 1. 隐式转换隐式转换时必须符合一定条件,不能导致信息丢失。例如,uint8可以转换为uint16,但是int8不可以转换为uint256,因为in ...