Scala 如何通过隐式函数从单个元素创建Hlist
我试图隐式地创建一个hlistScala 如何通过隐式函数从单个元素创建Hlist,scala,shapeless,Scala,Shapeless,我试图隐式地创建一个hlist case class A(value: Int) implicit def lift(single: A): A :: HNil = single :: HNil def something[L <: HList](l: L)(implicit lUBConstraint: LUBConstraint[L, A], isHCons: IsHCons[L]) = { println("
case class A(value: Int)
implicit def lift(single: A): A :: HNil = single :: HNil
def something[L <: HList](l: L)(implicit lUBConstraint: LUBConstraint[L, A],
isHCons: IsHCons[L]) = {
println("works")
}
something(A(1) :: A(2) :: HNil) //works
something(A(1)) //not works
something(lift(A(1))) //works
案例类别A(值:Int)
隐式def提升(单个:A):A::HNil=单个::HNil
def something[LIIRC Scala隐式转换不会触发以满足类型边界
您可以修改某物的定义,以允许任何此类转换工作:
def something[X, L <: HList](x: X)(
implicit asHList: X => L,
lUBConstraint: LUBConstraint[L, A],
isHCons: IsHCons[L]
) = {
println("works")
}
def某物[X,L,
lUBConstraint:lUBConstraint[L,A],
isHCons:isHCons[L]
) = {
println(“作品”)
}
对于单参数,这将使用lift
函数,并且IIRC Scala隐式转换不会触发以满足类型边界
您可以修改某物的定义,以允许任何此类转换工作:
def something[X, L <: HList](x: X)(
implicit asHList: X => L,
lUBConstraint: LUBConstraint[L, A],
isHCons: IsHCons[L]
) = {
println("works")
}
def某物[X,L,
lUBConstraint:lUBConstraint[L,A],
isHCons:isHCons[L]
) = {
println(“作品”)
}
对于单参数,这将使用您的lift
函数,以及以何种方式不起作用?是否有错误?如果有,请提供如图所示的错误。我编辑了该问题。以何种方式不起作用?是否有错误?如果有,请提供如图所示的错误。我编辑了该问题。谢谢,但它是否有作用(A(1)::A(2)::HNil)?@Korkor是的,就像我说的,它会使用谢谢你,但是它会为某事工作吗?(A(1)::A(2)::HNil)?@Korkor是的,就像我说的,它会使用