コンパイラがタイプパラメータとして列挙を使用したいと思っています。Scalaで型パラメータとして列挙型を使用できますか?
object VehicleClass extends Enumeration {
type VehicleClass = Value
val Land, Air, Sea = Value
}
import VehicleClass._
trait Vehicle[K <: VehicleClass] { val kind: K }
case class Car(passengers: Int) extends Vehicle[Land] { val kind: Land }
コンパイラは文句:
[error] /Users/me/test/scala/co.blocke.scalajack/json/test.misc/Greg.scala:18: not found: type Land
[error] case class Car(passengers: Int) extends Vehicle[Land] { val kind: Land }
[error] ^
[error] /Users/me/test/scala/co.blocke.scalajack/json/test.misc/Greg.scala:18: not found: type Land
[error] case class Car(passengers: Int) extends Vehicle[Land] { val kind: Land }
[error] ^
はどのようにこれを行うことができますか?
なぜ列挙が必要ですか?たぶんあなたは密閉型のVehicleClassとLand、Air、Seaを使って同様の結果を得ることができるかもしれません –
アレクセイがEnumerationsで作業することができると言いますが、これはJosep指摘している。私はscala.Enumerationを使用することはありません。このリンクは、http://underscore.io/blog/posts/2014/09/03/enumerations.htmlの詳細を理解するのに役立ちます。 – iain