包含序列的无形HList

时间:2017-05-06 12:52:02

标签: scala shapeless

我有一个String表示,如下所示,我想表示为HList。这是它:

123456,/02/2017,0,0,0,0,0,0,170.153

所以我感兴趣的类型是:

Int :: DateTime :: Seq[Double]

我能够管理一对一的映射,但是我怎样才能将上面的表示转换为我想要的Shapeless类型?有什么建议吗?

1 个答案:

答案 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​​}}结尾