找不到隐式参数的值(可扩展记录)

时间:2018-08-21 18:53:03

标签: scala record shapeless hlist

我有一个类似于以下功能的函数:

def fun[T <: HList](l: T)(implicit k: HKernelAux[T], ft: FromTraversable[T]) = ???

当我传递类型为HList的参数时,此函数有效。如果我传递了一条带有标签的HList可扩展记录,则找不到隐式参数的值。这是为什么?有没有一种方法可以使该功能适用​​于HList和可扩展记录,或者我可以提供另一种适用于可扩展记录的功能?

1 个答案:

答案 0 :(得分:0)

问题是找不到Typeable的{​​{1}}实例。

尝试修改功能:

FieldType[Witness.`'key`.T, ValueType]

用法:

import shapeless.{HList, HNil}
import shapeless.ops.hlist.HKernelAux
import shapeless.ops.traversable.FromTraversable
import shapeless.ops.record.Values

def fun[T <: HList, T1 <: HList](l: T)(implicit v: Values.Aux[T, T1], k: HKernelAux[T1],  ft: FromTraversable[T1]) = {
  //use l.values instead of l
}