2016-03-03 84 views
1

我想創建enum類型與value可以更改。 考慮以下幾點:更改scala枚舉編號

object Type extends Enumeration 
{ 
    var a = Value(0, "some string1") 
    val b = Value(1, "some string2") 
    val c = Value(2, "some string3") 
} 

我給每個enum領域的value,但我希望有改變這種value的選項。 另一個是,我從某個表中讀取values,所以enum具有相同的值作爲選項。 這可能嗎?

+1

這聽起來不像'Enumeration'的好用例。你想要一個可變的'Set',也許。 –

+0

'對象'中的'var' =全局可變狀態=不是一個好主意。 – Jesper

+0

只是好奇,爲什麼你想要以這種方式模擬你的枚舉?只是爲了舉證,如果可能的話,或者你有真正的用例嗎?枚舉絕對不是一個用例。 – Teliatko

回答

1

通常的說法是,枚舉不是可變的。元素在編譯時枚舉爲類型安全常量。

另外,Enumeration比較脆弱。

scala> object X extends Enumeration { var x = Value(0, "a") ; def f() = x = Value(1, "b") } 
defined object X 

scala> X.x 
res1: X.Value = a 

scala> X.f() 

scala> X.x 
res3: X.Value = b 

scala> X.values 
res4: X.ValueSet = X.ValueSet(a, b)