什么是「;“价值”;在Scala枚举类中?

什么是「;“价值”;在Scala枚举类中?,scala,class,Scala,Class,我是scala新手,正在阅读本页()中的Enum类 我有两个问题: 在工作日的定义中,周一、周二、周三、周四、周五、周六、周日的“值”是多少 在定义了对象WeekDay之后,为什么我们需要在这里使用“import WeekDay.ux” 谢谢大家! 来自scala文档 对Value方法的每次调用都会向枚举添加一个新的唯一值。为了便于访问,这些值通常被定义为枚举的val成员 所以Mon、Tue、Wed、Thu、Fri、Sat、Sun只是简单的值,每个值都通过调用名为Value的函数来实例化(请参

我是scala新手,正在阅读本页()中的Enum类 我有两个问题:

  • 在工作日的定义中,周一、周二、周三、周四、周五、周六、周日的“值”是多少
  • 在定义了对象WeekDay之后,为什么我们需要在这里使用“import WeekDay.ux”
  • 谢谢大家!

  • 来自scala文档
  • 对Value方法的每次调用都会向枚举添加一个新的唯一值。为了便于访问,这些值通常被定义为枚举的val成员

    所以
    Mon、Tue、Wed、Thu、Fri、Sat、Sun
    只是简单的值,每个值都通过调用名为
    Value
    的函数来实例化(请参阅)

  • 导入不是为了定义工作日,而是为了使用。请注意,Mon、Tue等是在对象内部定义的。就像scala中的每个标识符一样,您需要导入以访问另一个包或对象中定义的标识符。如果在一个文件中定义枚举,并在另一个文件中使用它,则会更清楚

  • <> >您没有要求,但在很多情况下,您也应该考虑使用<代码>密封特性< /> >或纯java枚举,以便获得完全匹配的警告。scala编译器告诉您当您不处理枚举中的所有情况时,这是一件非常有用的事情。很多人认为,如果你不能处理所有的情况,那么建模错误。看


    重要的是,
    Value
    不是Scala关键字。这是
    枚举
    上的一个普通方法,它正是我们所需要的。如果不是标准库提供的,我们可以自己编写。此外,虽然很少使用,但您可以在Scala中执行类似
    val a,b=new StringBuilder()
    的操作,并且
    a
    b
    将不同
    StringBuilder
    s。这是Scala 2中枚举类的
    valx,Y,Z=Value所使用的特性。没有人真正使用它,人们倾向于使用第三方库,比如enumeratum,甚至Java enums。所以不要在这上面花费太多精力。好消息:Scala 3改进了枚举,效果更好。