How to access an Enum object inside a scala class
我想知道从类内部和外部访问枚举的正确语法是什么。
我的代码:
1 2 3 4 5 6 7 8 9 10 11 |
这段代码是编译的,但它有一个丑陋的一面。
我想知道枚举值是否可以从类内部以更干净的方式访问,例如不使用"enums.enums",我还想知道如何从类外部访问枚举值。
edit:我还想知道是否可以在默认构造函数中使用一个值,该值采用枚举类型,例如,向类头添加(car:celig.enums)。
谢谢
像下面这样的东西能满足你的需求吗?
1 2 3 4 5 6 7 |
我要注意的是,在斯卡拉的世界里,
特别是,我可能会重写您的代码,如下所示:
1 2 3 4 5 6 7 |
号
这种方式有很好的编译器支持,可以对match语句进行详尽的检查,并且允许比
1 2 3 4 5 6 7 8 9 |
结果
1 2 3 4 5 6 7 8 | [info] Set current project to Test 1 (in build file:/scalastuff/) [info] Compiling 1 Scala source to /scalastuff/target/scala-2.11/classes... [warn] /scalastuff/src/main/scala/Main.scala:35: match may not be exhaustive. [warn] It would fail on the following input: YEE [warn] def switchOnEnums(x: ENums): Int = x match { [warn] ^ [warn] one warning found [success] Total time: 5 s, completed Sep 16, 2016 1:13:35 AM |
。
对于一个更复杂的层次结构,它仍然享受着以前的编译器辅助的详尽性检查。
1 2 3 4 5 6 7 8 9 10 11 12 13 | sealed trait Day case object Monday extends Day case object Tuesday extends Day // Got tired of writing days... sealed trait Month case object January extends Month case object February extends Month // Got tired of writing months... sealed trait Date case class CalendarFormat(day: Day, month: Month, year: Int) extends Date case class UnixTime(sinceUTC: BigInt) extends Date |