我想這和它的作品可供選擇:LabelledGenerid.Aux隱含不使用函數體中的泛型類型時
`
case class Foo(name: String)
class Morphic(map: Map[String, Any]) {
def add(k: String, v: Any) = {
new Morphic((map + (k -> v)))
}
def to[T](): T = {
def toClass[A]: ToCase[A] = new ToCase[A] // This is class to convert from Map to case class
val res = toClass[Foo].from(map).get // <-- problem is here - cannot use T
res.asInstanceOf[T]
}
}
object testApp extends App {
var m = new Morphic(Map[String, Any]())
var m1 = m.add("name", "john")
println(m1.to[Foo])
}
我應該在val res = toClass[T].from(map).get
使用的T,而不是富,但不編譯說隱缺少
toClass[T].from
從地圖
創建一個給定類型的案件類的我如何作出這樣的隱式的(可能還有其他人在其上。從依賴)能夠使用的功能?
我試圖def to[T, H <: HList]()(implicit gen: LabelledGeneric.Aux[A, H]) = ...
但後來我需要指定兩種類型的調用。要的時候,我無法弄清楚如何指定用於h
感謝
寫下你的'ToCase'。 –
如果我理解正確,'toClass [Foo] .from(map)'是類型'Foo'。 'toClass [Foo] .from(map).get'中的'.get'來自哪裏? 'Foo'中有'.get'嗎? –
啊,也許它不是'Foo',而是'Option [Foo]'。 –