E4154

E4154#

自定义标记值的非常量枚举 enum

MoonBit 支持自定义枚举构造器的整数表示:

enum Flag {
  A = 1
  B = 2
  C = 3
}

但是,只有常量 enum 值(所有构造器都没有负载)才能有自定义标记值。否则编译器会产生本错误。

错误示例#

enum Bad {
  A = 1
  B = 2
  C(Int)
}

建议#

移除构造器负载,或移除自定义标记值:

pub enum Good {
  A = 1
  B = 2
  C = 3
}

pub fn all() -> (Good, Good, Good) {
  (A, B, C)
}