Scala,Tupler类型返回到HList
假设我在一个简单的类中有一个可用的元组Scala,Tupler类型返回到HList,scala,shapeless,Scala,Shapeless,假设我在一个简单的类中有一个可用的元组 class Tupling[L <: HList, TP](tupler:Tupler.Aux[L, TP]) 如何实现函数:toHList 我发现以下方法不起作用 def toHlist(value:TP):L = shapeless.syntax.std.tuple.productTupleOps(value).productElements 如果我们看一下您在toHList中使用的两个不成形函数的实现: 有一个类型参数,其上限为Pro
class Tupling[L <: HList, TP](tupler:Tupler.Aux[L, TP])
如何实现函数:toHList
我发现以下方法不起作用
def toHlist(value:TP):L =
shapeless.syntax.std.tuple.productTupleOps(value).productElements
如果我们看一下您在
toHList
中使用的两个不成形函数的实现:
- 有一个类型参数,其上限为
,因此需要指定Product
是TP
Product
- 需要元组值的
泛型
类型类实例
Tupling
类可以如下所示:
class Tupling[L <: HList, TP <: Product](tupler: Tupler.Aux[L, TP]) {
def toHList(value: TP)(implicit gen: Generic.Aux[TP, L]): L =
shapeless.syntax.std.tuple.productTupleOps(value).productElements
}
您还可以将隐式参数添加到构造函数中,而不是toHList
函数
class Tupling[L <: HList, TP <: Product](tupler: Tupler.Aux[L, TP]) {
def toHList(value: TP)(implicit gen: Generic.Aux[TP, L]): L =
shapeless.syntax.std.tuple.productTupleOps(value).productElements
}
import shapeless.syntax.std.tuple._
class Tupling[L <: HList, TP <: Product](tupler: Tupler.Aux[L, TP]) {
def toHList(value: TP)(implicit gen: Generic.Aux[TP, L]): L =
value.productElements
}