我有两个枚举类定义如下。
object Rating extends Enumeration {
type Rating = Value
val LOW: Value = Value("Low")
val AVERAGE: Value = Value("Average")
val HIGH: Value = Value("High")
}
object Reason extends Enumeration {
type Reason = Value
val MISSING_PARTS: Value = Value(1)
val WRONG_ITEM: Value = Value(2)
val DEFECTIVE_ITEM: Value = Value(3)
}
Run Code Online (Sandbox Code Playgroud)
如何根据字符串值“低”、“平均”和“高”获得评级
如何根据整数值 1、2、3 获取原因
如何根据 val 名称 MISSING_PARTS、WRONG_ITEM、DEFECTIVE_ITEM 获取原因
如果我没有使用正确的术语,请纠正我。我有 Java 背景,刚接触 Scala。我做了很多搜索,但要么它们已经过时,要么它们使用非常琐碎的示例,其中标签和值是相同的字符串,这没有多大帮助。
任何帮助将不胜感激。
Rating.withName("Low")Reason(1)(这是 的简写Reason.apply(1))Reason.withName("DEFECTIVE_ITEM")解释:
每个枚举值都有一个 id 和一个名称。两者都是使用默认值生成的,除非您使用适当的Value(...)重载覆盖它们。在本例中,Rating具有自定义名称和Reason自定义ID。根据上面的代码,这些是分配给每个值的名称和 ID:
val LOW: Value = Value("Low") // Id: 0; Name: Low
val AVERAGE: Value = Value("Average") // Id: 1; Name: Average
val HIGH: Value = Value("High") // Id: 2; Name: High
val MISSING_PARTS: Value = Value(1) // Id: 1; Name: MISSING_PARTS
val WRONG_ITEM: Value = Value(2) // Id: 2; Name: WRONG_ITEM
val DEFECTIVE_ITEM: Value = Value(3) // Id: 3; Name: DEFECTIVE_ITEM
Run Code Online (Sandbox Code Playgroud)
现在,我们可以使用withName(name: String)或apply(id: Int)which 分别基于名称和 id 引用值来访问特定值。