作爲一個練習,我試圖看看我是否可以採取List[Any]
並將其「鑄造」爲使用無形的案例類。將列表轉換爲案例類
A的什麼,我想實現非常簡單的例子:
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))
這裏是我的推理:
我知道你可以從案例類轉到HList [T](CC - > HList [T]);其中T是HList的類型。我也知道,只要知道HList的類型,就可以從列表(列表 - >選項[HList])創建一個HList。最後,我知道你可以從一個HList到一個案例類(HList→CC)。
CC -> HList[T]
list -> Option[HList[T]] -> Option[CC]
我想知道這是否有意義或如果我在這裏的方式。我們能做這項工作嗎?還有其他建議嗎?謝謝!
很好的嘗試,但是你錯過了'Typeable'和'FromTraversable'其對付你想用'Creator'來解決問題。 –