我有两个班级:
class X[A](implicit ord: Ordering[A]) // + other irrelevant parameters
class Y[A: Ordering] extends X[A]
给定Symbol
对应于Y
的隐式构造函数参数,我想找到它对应的父类隐式参数的符号(如果存在)。
val yOrdSym = ...
val yOrdType = yOrdSym.typeSignature
val xImplicitParams =
xSym.primaryConstructor.paramLists.flatten.
filter(xParam => xParam.isImplicit && ???)
现在我需要过滤它以获得相同的类型(或超类型,但这对我的用例来说并不重要)。我尝试了xParam.typeSignature =:= yOrdSym.typeSignature
,但没有成功。这是有道理的,因为类型参数具有不同的所有者。但是,xParam.typeSignature =:= yOrdSym.typeSignatureIn(xSym.toType)
和xParam.typeSignatureIn(ySym.toType) =:= yOrdSym.typeSignature
也不起作用。如何正确地做到这一点?