我有两节课:
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
行。如何正确执行?