Scala:如何根据值和标签获取枚举元素?
Scala: How to get Enumeration element based on values and labels?
我有两个枚举 类 定义如下。
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)
}
如何根据字符串值 "Low"、"Average" 和 "High"
获取评级
如何根据整数值 1、2、3 获取原因
如何根据 val 名称获取 Reason MISSING_PARTS、WRONG_ITEM、DEFECTIVE_ITEM
如果我使用的术语不正确,请纠正我。我来自 Java 背景并且是 Scala 的新手。我进行了很多搜索,但要么它们已经过时,要么它们使用非常琐碎的示例,其中标签和值是相同的字符串,这没有多大帮助。
任何帮助将不胜感激。
Rating.withName("Low")
Reason(1)
(shorthand 对应 Reason.apply(1)
)
Reason.withName("DEFECTIVE_ITEM")
解释:
每个枚举值都有一个 ID 和一个名称。除非您使用适当的 Value(...)
重载覆盖它们,否则两者都是使用默认值生成的。在这种情况下,Rating
自定义了 names,Reason
自定义了 IDs。根据上面的代码,这些是分配给每个值的名称和 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
现在,我们可以使用 withName(name: String)
或 apply(id: Int)
访问特定值,它们分别基于名称和 ID 引用值。
我有两个枚举 类 定义如下。
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)
}
如何根据字符串值 "Low"、"Average" 和 "High"
获取评级
如何根据整数值 1、2、3 获取原因
如何根据 val 名称获取 Reason MISSING_PARTS、WRONG_ITEM、DEFECTIVE_ITEM
如果我使用的术语不正确,请纠正我。我来自 Java 背景并且是 Scala 的新手。我进行了很多搜索,但要么它们已经过时,要么它们使用非常琐碎的示例,其中标签和值是相同的字符串,这没有多大帮助。
任何帮助将不胜感激。
Rating.withName("Low")
Reason(1)
(shorthand 对应Reason.apply(1)
)Reason.withName("DEFECTIVE_ITEM")
解释:
每个枚举值都有一个 ID 和一个名称。除非您使用适当的 Value(...)
重载覆盖它们,否则两者都是使用默认值生成的。在这种情况下,Rating
自定义了 names,Reason
自定义了 IDs。根据上面的代码,这些是分配给每个值的名称和 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
现在,我们可以使用 withName(name: String)
或 apply(id: Int)
访问特定值,它们分别基于名称和 ID 引用值。