我有一个字符串的枚举,它来自查询到数据库的结果。
换句话说,我正在查询数据库中的事件,其中一个属性是事件描述,它应该始终属于一组众所周知的字符串。例如。
等等。
我想在Scala中建模来自数据库的可能字符串。我正在考虑使用Enum,但我不知道我在网上看到了什么。
最终,我想要做的是将属性的值与此值之一进行比较,以根据事件描述的类型执行某些任务。
Alghough我可以去,只需输入我的魔法字符串
if (eventDesc == "PreferedLabelAdded")
我发现它很糟糕,因为没有一个接触点来改变这些字符串,而是它遍布整个代码。
也许只是简单地使用Object
Object EventDesc {
val PrefAdded = "PreferedLabelAdded""
val PrefChanged = "...."
}
如果有人对此有一些具体的建议,那就太好了。
丹尼尔
答案 0 :(得分:1)
您可以扩展scala.Enumeration类来创建枚举:
object EventDesc extends Enumeration {
type EventDesc = Value
val PreferedLabelAdded, PreferedLabelChanged, UNKNOWN = Value
}
val eventDesc = EventDesc.withName("PreferedLabelAdded")
if (eventDesc == EventDesc.PreferedLabelChanged) {
Console.println(eventDesc)
}
您也可以进行模式匹配:
eventDesc match {
case PreferedLabelAdded | PreferedLabelChanged => handleEvent(context)
case UNKNOWN => ignoreEvent(context)
case _ => // noop
}