【发布时间】:2015-12-03 13:02:04
【问题描述】:
下面的代码看起来很明显,可以编译和运行
case class Pair(a: String, b: Int)
val pairGen = Generic[Pair]
object size extends Poly1 {
implicit def caseInt = at[Int](x => 1)
implicit def caseString = at[String](_.length)
}
def funrun(p: Pair) = {
val hp: HList = pairGen.to(p)
hp.map(size)
}
但是编译器说“找不到参数映射器的隐式值”。在我的用例中,我想映射一个 HList 以获取 String(s) 的 HList,然后将 String(s) 的 HList 转换为 Scala List[String]。有任何想法吗?
【问题讨论】:
-
如果您删除 hp 的类型,那么代码将照原样运行。因此,您应该使用“val hp = pairGen.to(p)”而不是“val hp: HList = pairGen.to(p)”
标签: scala shapeless type-level-computation hlist