有这样一个类:
case class Sex(name: String, number: Int)
object Sex {
val FEMALE = new Sex("FEMALE", 1)
val MALE = new Sex("MALE", 2)
def apply(number: Int): Sex = number match {
case FEMALE.number => FEMALE
case MALE.number => MALE
}
}
我很担心这个方法apply,如何修改它才不会写出相同类型的结构?
对于这种情况和类似情况,有枚举库
下面是使用 enumeratum 的代码:
与内置相比的主要优点
Enumeration是:trait\class包含方法、值、内部类型等。Enum)或其他键(for )ValueEnumValueEnum在编译时检查键的唯一性。例如,在上面的代码中,如果将定义行更改Male为编译器会抱怨非唯一值
NuSuchElementException,而enumeratum.Enum定义方法的withNameOption开销要低得多。我认为,在那些用一种语言方式解决问题不自然的情况下,应该使用另一种方式。例如,一个枚举: