Scala枚举类型的命名规范是什么?
Scala枚举类型的命名规范是什么?
Scala枚举类型的命名规范是什么?例如在下面的代码中:
object EventType extends Enumeration { type EventType = Value val Registered = Value("Registered") val Started = Value("Started") } /** * The event that fires under specific life cycle * * @param eventType the [[EventType.EventType]] */ case class Event(eventType: EventType.EventType)
上述代码遵循与Scala文档中描述的相同风格。问题在于,与Java或C#等其他语言中的枚举定义相比,“EventType.EventType”的名称非常冗长且奇怪。因此,我想知道是否有任何推荐的命名风格可以提高可读性?提前感谢。
admin 更改状态以发布 2023年5月25日
为了缩短它,您可以使用带有下划线的导入来从对象 EventType
中导入所有内容。 因此,您将使用 import EventType._
而不是 import EventType
。 这是一个例子:
scala> object EventType extends Enumeration { | type EventType = Value | | val Registered = Value("Registered") | val Started = Value("Started") | } defined object EventType scala> object Test { | import EventType._ | | case class Event(eventType: EventType) | } defined object Test
事情可能看起来令人困惑,因为 EventType
是对象的名称,而 EventType.EventType
是枚举的类型。 所以如果你像这样使用它:
EventType.Registered
那么在这种情况下,它是对象的名称,而不是类型。 相反,在这里:
case class Event(eventType: EventType)
它是类型的名称,即用 type EventType
定义的名称。
如果您想避免混淆,可以给该类型赋予不同的名称:
scala> object Events extends Enumeration { | type EventType = Value | val Registered = Value("Registered") | val Started = Value("Started") | } defined object Events scala> object Test { | import Events._ | case class Event(eventType: EventType) | val a = Event(Registered) | } defined object Test