【发布时间】:2018-01-06 02:43:06
【问题描述】:
我正在尝试隐式创建一个 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
something(A(1)) 不工作。但是,我使用了 intellij idea,它可以检测到 lift 适合在这里使用。
这是来自编译器的错误消息。
推断的类型参数 [Boot.A] 不符合方法的类型参数边界 [L <: shapeless.hlist something>
类型不匹配; [error] found : Boot.A [error] required: L [error] something(A(1))
找不到参数 lUBConstraint 的隐含值:shapeless.LUBConstraint[L, Boot.A] [error] something(A(1)
【问题讨论】:
-
在什么情况下它不起作用?有错误吗?如果是这样,请提供如图所示的错误。
-
我编辑了问题。