Scala shapeless:为HList派生元组
我对“变形”非常陌生,正在努力为我的Scala shapeless:为HList派生元组,scala,shapeless,hlist,Scala,Shapeless,Hlist,我对“变形”非常陌生,正在努力为我的HList导出一个Tupler。以下是一个简化的示例: object Builder { import shapeless.ops.hlist.Tupler.hnilTupler val empty: Builder[HNil] = new Builder[HNil](HNil) } class Builder[L <: HList: Tupler](list: L) { def add[T](value: T): Builder[T ::
HList
导出一个Tupler
。以下是一个简化的示例:
object Builder {
import shapeless.ops.hlist.Tupler.hnilTupler
val empty: Builder[HNil] = new Builder[HNil](HNil)
}
class Builder[L <: HList: Tupler](list: L) {
def add[T](value: T): Builder[T :: L] = new Builder[T :: L](value :: list)
def tuple: Tupler[L]#Out = list.tupled
}
对象生成器{
导入shapeless.ops.hlist.Tupler.hnilTupler
val empty:Builder[HNil]=新的Builder[HNil](HNil)
}
不应导入类生成器[Lshapeless.ops.hlist.Tupler.hniltupper
通常在Scala中,如果一个方法缺少一些隐式参数,则添加相应的隐式参数
def add[T](value: T)(implicit tupler: Tupler[T :: L]): Builder[T :: L] = new Builder[T :: L](value :: list)
shapeless.ops.hlist.Tupler.hniltupper
不应导入
通常在Scala中,如果一个方法缺少一些隐式参数,则添加相应的隐式参数
def add[T](value: T)(implicit tupler: Tupler[T :: L]): Builder[T :: L] = new Builder[T :: L](value :: list)