2016-07-25 48 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 
}