我有一个String表示,如下所示,我想表示为HList。这是它:
123456,/02/2017,0,0,0,0,0,0,170.153
所以我感兴趣的类型是:
Int :: DateTime :: Seq[Double]
我能够管理一对一的映射,但是我怎样才能将上面的表示转换为我想要的Shapeless类型?有什么建议吗?
答案 0 :(得分:2)
我不确定你的麻烦在哪里。你为什么不能这样做:
def hlistFromString(s: String): Int :: Date :: Seq[Double] :: HNil = {
val ss = s.split(',')
ss(0).toInt :: new Date(ss(1)) :: ss.toSeq.drop(2).map(_.toDouble) :: HNil
}
val s = "123456,01/02/2017,0,0,0,0,0,0,170.153"
println(hlistFromString(s))
输出
123456 :: Mon Jan 02 00:00:00 2017 :: ArrayBuffer(0.0,0.0,0.0,0.0,0.0,0.0,170.153):: HNil
我唯一的猜测就是你错过了任何HList
类型应该以{{1}}结尾