Scala 如何通过隐式函数从单个元素创建Hlist

Scala 如何通过隐式函数从单个元素创建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("

我试图隐式地创建一个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("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是的,就像我说的,它会使用