2016-07-25 50 views
0

我有一个从查询结果到数据库的字符串的枚举。如何使用枚举在Scala中模拟全局常量?

换句话说,我从数据库查询事件,其中一个属性是事件描述,它应该总是属于一组众所周知的字符串。例如。

  1. “PreferedLabelAdded”
  2. “PreferedLabelChanged”

等。

我想模拟来自Scala内数据库的可能字符串。我正在考虑使用Enum,但我没有看到我在网上看到的如何。

最终,我想要做的就是根据事件描述的类型将属性的值与此值之一进行比较以执行一些任务。

Alghough我可以去简单地进入我的魔字符串作为这样

if (eventDesc == "PreferedLabelAdded") 

我觉得不好,因为一个没有得到一个接触点来改变这些字符串,而是得到它遍布码。

也许只需使用一个对象作为这样

Object EventDesc { 

val PrefAdded = "PreferedLabelAdded"" 
val PrefChanged = "...." 

} 

如果任何人有一些具体的建议,那将是巨大的。

丹尼尔

回答

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 
}