我有一个类似于以下功能的函数:
def fun[T <: HList](l: T)(implicit k: HKernelAux[T], ft: FromTraversable[T]) = ???
当我传递类型为HList
的参数时,此函数有效。如果我传递了一条带有标签的HList
可扩展记录,则找不到隐式参数的值。这是为什么?有没有一种方法可以使该功能适用于HList
和可扩展记录,或者我可以提供另一种适用于可扩展记录的功能?
答案 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
}