Scala shapeless-使用Mapped包装到具有2个或更多参数的类型
例如,我有Scala shapeless-使用Mapped包装到具有2个或更多参数的类型,scala,shapeless,Scala,Shapeless,例如,我有 class C[T, U] { ... } class D[T, L <: HList, M <: HList] { ... } 因为T是D的类型参数,所以这样的定义必须在D的主体内,因此从D的类型参数(即从方括号内)看不到它 因此,我应该编写自己的Mapped实现吗?或者有一些内置的解决方案吗?如果您的问题是C有2个参数而不是1个参数,并且希望避免定义可以使用的别名 或编译器插件 Mapped.Aux[L, C[T, ?], M] 通常,likeshapeless.
class C[T, U] { ... }
class D[T, L <: HList, M <: HList] { ... }
因为T
是D
的类型参数,所以这样的定义必须在D
的主体内,因此从D
的类型参数(即从方括号内)看不到它
因此,我应该编写自己的
Mapped
实现吗?或者有一些内置的解决方案吗?如果您的问题是C
有2个参数而不是1个参数,并且希望避免定义可以使用的别名
或编译器插件
Mapped.Aux[L, C[T, ?], M]
通常,likeshapeless.ops.hlist.Mapped
应在隐式定义中使用,如
class C[T, U] {
// ...
}
class D[T, L <: HList, M <: HList] {
// ...
}
object D {
implicit def mkInstanceOfD[T, L <: HList, M <: HList](implicit
mapped: Mapped.Aux[L, C[T, ?], M]): D[T, L, M] = ???
//implicit def mkInstanceOfD[T, L <: HList, M <: HList](implicit
// mapped: Mapped.Aux[L, ({ type l[U] = C[T, U] })#l, M]): D[T, L, M] = ???
}
C类[T,U]{
// ...
}
D类[T,L
Mapped.Aux[L, C[T, ?], M]
class C[T, U] {
// ...
}
class D[T, L <: HList, M <: HList] {
// ...
}
object D {
implicit def mkInstanceOfD[T, L <: HList, M <: HList](implicit
mapped: Mapped.Aux[L, C[T, ?], M]): D[T, L, M] = ???
//implicit def mkInstanceOfD[T, L <: HList, M <: HList](implicit
// mapped: Mapped.Aux[L, ({ type l[U] = C[T, U] })#l, M]): D[T, L, M] = ???
}