Scala 不从val调用时,找不到类方法隐式参数

Scala 不从val调用时,找不到类方法隐式参数,scala,shapeless,implicits,Scala,Shapeless,Implicits,我有一个类,它依赖于一个HList,有一个多态函数和一个方法将这个函数映射到列表上。奇怪的是,此方法只能在val上调用,否则编译失败: import shapeless._ import shapeless.ops.hlist.Mapper class C[L <: HList](l: L) { object f extends Poly1 { implicit def whatever[T] = at[T]{_ => ()} } def g

我有一个类,它依赖于一个
HList
,有一个多态函数和一个方法将这个函数映射到列表上。奇怪的是,此方法只能在
val
上调用,否则编译失败:

import shapeless._
import shapeless.ops.hlist.Mapper

class C[L <: HList](l: L) {
    object f extends Poly1 {
        implicit def whatever[T] = at[T]{_ => ()}
    }
    def g(implicit m: Mapper[f.type,L]) = ()
}
val c = new C(1 :: "s" :: HNil)

// this line compiles:
val v1 = c.g

// compilation fails if c is inlined:
val v2 = (new C(1 :: "s" :: HNil)).g
// error: could not find implicit value for parameter m:
//   Mapper[_1.f.type, Int :: String :: HNil]]]
导入无形状_
导入shapeless.ops.hlist.Mapper
类C[L()}
}
def g(隐式m:Mapper[f.type,L])=()
}
val c=新的c(1::“s::HNil)
//这一行编译:
val v1=c.g
//如果c是内联的,则编译失败:
valv2=(新的C(1::“s::HNil)).g
//错误:找不到参数m的隐式值:
//映射器[_1.f.type,Int::String::HNil]]

有没有办法克服这种行为,同时将
f
放在
C
内?我试图将方法
g
提取到另一个类或对象,但没有帮助。

的可能重复似乎这个问题讨论了另一个错误