Как упражнение, я пытаюсь посмотреть, могу ли я взять List[Any]
и «отличить его» в класс case, используя бесформенный.Преобразование списка в случай Класс
Очень простой пример того, что я пытаюсь достичь:
case class Foo(i: Int, j: String)
val foo: Option[Foo] = fromListToCaseClass[Foo](List(1:Any, "hi":Any))
Вот как я шейпинг мое решение (это может быть совсем выключен):
def fromListToCaseClass[CC <: Product](a: List[Any]): Option[CC] = a.toHList[???].map(x => Generic[CC].from(x))
Вот мои рассуждения :
Я знаю, что вы можете перейти от класса case к HList [T] (CC -> HList [T]); где T - тип HList. Я также знаю, что вы можете создать HList из списка (list -> Option [HList]), пока вы знаете тип HList. Наконец, я знаю, что вы можете перейти от HList к классу case (HList -> CC).
CC -> HList[T]
list -> Option[HList[T]] -> Option[CC]
Мне интересно, если это имеет смысл или я ухожу здесь. Можем ли мы сделать эту работу? Любые другие предложения? Благодаря!
Хорошая попытка, но вы пропустили 'Typeable' и' FromTraversable' которые имеют дело с проблемой, которую вы пытаетесь решить с 'Creator'. –