J'essaie cela et il fonctionne:LabelledGenerid.Aux implicite non disponible lors de l'utilisation type générique dans le corps de la fonction
`
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])
}
je devrais utiliser T au lieu de Foo dans val res = toClass[T].from(map).get
mais il ne compile pas dire implicite il manque
toClass[T].from
est une fonction de création d'un type de classe de cas Carte
donné Comment puis-je faire que implicites (et peut-être d'autres sur lesquels repose .from) disponible?
J'ai essayé def to[T, H <: HList]()(implicit gen: LabelledGeneric.Aux[A, H]) = ...
mais je besoin de spécifier les types lors de l'appel .to et je ne peux pas comprendre ce qu'il faut préciser H
Merci
Ecrivez votre 'ToCase'. –
Si je comprends bien, 'toClass [Foo] .from (map)' est de type 'Foo'. Où est '.get' dans' toClass [Foo] .from (map) .get'? Avez-vous '.get' dans' Foo'? –
Ah, peut-être, ce n'est pas "Foo" mais "Option [Foo]". –