0
我想建立一個解釋我的ADT,但我不知道如何解決的好辦法如何從多態類型字段加載隱清單
sealed trait Polymorphic[T]
case class Type1[T: Manifest](field1: T) extends Polymorphic[T]
case class Type2[T: Manifest, V: Manifest](field1: T, field2:V) extends Polymorphic[T] {
def vManifest: Manifest[V] = manifest[V]
}
object Interpreter {
def eval[T: Manifest](polymorphic: Polymorphic[T]): T = {
polymorphic match {
case Type1(field) =>
???
case value: Type2[T, _] =>
implicit val vManifest = value.vManifest
evalType2(value)
}
}
def evalType2[T:Manifest, V:Manifest](type2: Type2[T,V]): T = ???
}
此裝載艙單隱含的問題是我可以創建的最佳解決方案,但我不喜歡我必須創建vManifest函數才能在eval中加載清單。
有沒有更好的方法來做到這一點?
謝謝,這將工作,但我需要隱式再次在上下文中聲明清單,有沒有辦法避免這種情況? – Mikel
'import value.vManifest'也會這樣做。 –