Для небольших перечислений вы можете "смоделировать" поведение C:
abstract sealed class Color(val index: Int)
object Color {
implicit def col2int(color:Color) = color.index
}
case object ColorRed extends Color(0)
case object ColorGreen extends Color(1)
case object ColorBlue extends Color(2)
...
import Color._
val array = Array(1,2,3)
array(ColorRed) = 12
Однако я сомневаюсь, что это будет считаться хорошим стилем, особенно потому что это небезопасно.Использование карты - лучший подход, или вы можете заключить массив в специализированную структуру данных, которая имеет дело со значениями цвета:
class ColorArray[T:ClassManifest] {
val array = new Array[T] (3)
def apply(color: Color) = array(color.index)
def update(color: Color, value: T) = array(color.index) = value
}
...
val cArray = new ColorArray[Int]()
cArray(ColorRed) = 12
println(cArray(ColorRed))